Zadejte hledaný výraz...

Funkce – pokud je prázdné $_POST nebo $_GET

michal731
verified
rating uzivatele
(69 hodnocení)
29. 7. 2017 18:39:55
Hezký podvečer,
najde se tu chytrá hlava (asi není potřeba moc) a pomohla mě s jednou funkcí? Jde mě o to, že posílám $_POST a to ukládám přes SQL. Jenomže pokud nechám input prázdný, vyhodí mě to klasickou chybu "undefined".
Napadla mě funkce, která by to ošetřila ale evidentně nad tím přemýšlím špatně.
Napadlo mě něco takového
function EmptyPost ( $val )
{
if( ( empty( $val ) ) or ( !isset( $val ) ) )
{
$val = '';
}
return( $val );
}
Zápis bych pak prováděl
VALUES ( EmptyPost($_POST) )
29. 7. 2017 18:39:55
https://webtrh.cz/diskuse/funkce-pokud-je-prazdne-_post-nebo-_get#reply1292592
David Musil
verified
rating uzivatele
(69 hodnocení)
29. 7. 2017 19:00:26
if (isset($_POST)) {}
Tim se vyhnes undefined warningu. To je zda promenna vubec existuje. Jinak na test, zda neni prazdny retezec je funkce if (!empty($var)) {}
Do SQL kodu bych php podminky uz nestrkal. To by melo byt osetreno predtim.
29. 7. 2017 19:00:26
https://webtrh.cz/diskuse/funkce-pokud-je-prazdne-_post-nebo-_get#reply1292591
michal731
verified
rating uzivatele
(69 hodnocení)
29. 7. 2017 19:01:51
To právě vím ale nelze to aplikovat přímo do SQL příkazu. Jde o to, že tam mám 16 polí a nechci tam psát 16x IF a pokaždé definovat. Ale díky :)
Myslím, že pokud je pole úplně prázdné tak by mělo platit !isset ale prostě ta funkce zřejmě není schopná pracovat takzvaně s ničím.
---------- Příspěvek doplněn 29.07.2017 v 19:06 ----------
Napsal musil.david;1401653
Do SQL kodu bych php podminky uz nestrkal. To by melo byt osetreno predtim.
Já jsem to opravdu hodně googlil a nic nenašel. Ale nechce se mě věřit, že nebude nějaké elegantní řešení.
29. 7. 2017 19:01:51
https://webtrh.cz/diskuse/funkce-pokud-je-prazdne-_post-nebo-_get#reply1292590
Amwin
verified
rating uzivatele
29. 7. 2017 19:06:13
29. 7. 2017 19:06:13
https://webtrh.cz/diskuse/funkce-pokud-je-prazdne-_post-nebo-_get#reply1292589
David Klouček
verified
rating uzivatele
(1 hodnocení)
29. 7. 2017 19:07:38
Stačí:
(isset($_POST) && !empty($_POST) ? $_POST : '')
nebo aby nebyl zápis tak dlouhej, udělej si nějakou funkci jako:
function getPost($name, $default = '') {
return isset($_POST) ? $_POST : $default;
}
K testování řetězce použij spíš mb_strlen(), empty vrací TRUE i když je řetězec třeba 0, viz http://php.net/manual/en/function.empty.php
A všechny ty hodnoty poslaný uživatelem co vkládáš do dotazu ošetři před SQL injekcí.
29. 7. 2017 19:07:38
https://webtrh.cz/diskuse/funkce-pokud-je-prazdne-_post-nebo-_get#reply1292588
michal731
verified
rating uzivatele
(69 hodnocení)
29. 7. 2017 19:13:35
Napsal David Klouček;1401658
Stačí:
(isset($_POST) && !empty($_POST) ? $_POST : '')
nebo aby nebyl zápis tak dlouhej, udělej si nějakou funkci jako:
function getPost($name, $default = '') {
return isset($_POST) ? $_POST : $default;
}
K testování stringu jestli je prázdnej, použij spíš mb_strlen(), empty vrací TRUE u když třeba obsahuje 0, viz http://php.net/manual/en/function.empty.php
A všechny ty hodnoty poslaný uživatelem co vkládáš do dotazu ošetři před SQL injekcí.
Díky, bohužel nefunguje. Já to třeba teď potřebuji aplikovat na checkbox (ale později i na textové inputy). Buď je check a má hodnotu nebo není check a tedy není nastaven, tedy !isset
mb_strlen() tady také nepomůže. Nemá co počítat, vyhodí to syntax error na chybný parametr.
29. 7. 2017 19:13:35
https://webtrh.cz/diskuse/funkce-pokud-je-prazdne-_post-nebo-_get#reply1292587
David Klouček
verified
rating uzivatele
(1 hodnocení)
29. 7. 2017 19:29:39
U checkboxu obvykle ověřuješ ano/ne, na hodnotě tedy nezáleží a dává se většinou 1 a buď ho uživatel zaškrtne a na serveru bude mít hodnotu 1, nebo se vůbec neodešle. Pokud chceš do sloupce v db tabulce zapsat na základě zaškrtnutýho checkboxu 0 nebo 1:
(isset($_POST) ? 1 : 0)
//nebo
(int)isset($_POST)
29. 7. 2017 19:29:39
https://webtrh.cz/diskuse/funkce-pokud-je-prazdne-_post-nebo-_get#reply1292586
tomve
verified
rating uzivatele
(22 hodnocení)
29. 7. 2017 19:42:44
function EmptyPost($input = false, $return = ''){
if($input == false) return $return;
if( isset($_POST){
if( empty($_POST) ) return $return;
return $_POST;
}
elseif( !empty($_GET) ){
return $_GET;
}
else{
return $return;
}
}
$val = EmptyPost('vstup');
VALUES($val.....
29. 7. 2017 19:42:44
https://webtrh.cz/diskuse/funkce-pokud-je-prazdne-_post-nebo-_get#reply1292585
node
verified
rating uzivatele
(5 hodnocení)
30. 7. 2017 08:25:49
PHP: filter_input - Manual
30. 7. 2017 08:25:49
https://webtrh.cz/diskuse/funkce-pokud-je-prazdne-_post-nebo-_get#reply1292584
michal731
verified
rating uzivatele
(69 hodnocení)
30. 7. 2017 18:15:36
Napsal Tomve;1401667
function EmptyPost($input = false, $return = ''){
if($input == false) return $return;
if( isset($_POST){
if( empty($_POST) ) return $return;
return $_POST;
}
elseif( !empty($_GET) ){
return $_GET;
}
else{
return $return;
}
}
$val = EmptyPost('vstup');
VALUES($val.....
Bohužel ale jako řešení jsem tomu dával naději. Spíše tam budu špatně aplikovat vstup. V SQL to mám ve VALUES zapsané ".EmptyPost($_POST)."
30. 7. 2017 18:15:36
https://webtrh.cz/diskuse/funkce-pokud-je-prazdne-_post-nebo-_get#reply1292583
David Musil
verified
rating uzivatele
(69 hodnocení)
30. 7. 2017 22:05:15
Tak jsem dej celej kod.
30. 7. 2017 22:05:15
https://webtrh.cz/diskuse/funkce-pokud-je-prazdne-_post-nebo-_get#reply1292582
Pro odpověď se přihlašte.
Přihlásit