Zadejte hledaný výraz...

Dvě podmínky pod sebou a nastave první nebo druhá

kulisek926
verified
rating uzivatele
9. 6. 2014 14:03:04
Dobrý den.
Mám formulář na změnu údajů v DB. Mám to rozdělené na dva update. První změní heslo a druhý ostatní údaje. Mám tedy i dvě podmínky a mám to rozdělené, ale heslo se mi změní když vyjde první podmínka, ale když chci změnit něco z té druhé podmínky tak mi to vyhodí chybu, kterou mám nastavenou u obou podmínek, která reaguje v případě kdy je prázdný formulář. Tato chyba se vypíše dvakrát tedy za každou podmínku jednou.
Formulář je předvyplněný. Je to vytáhnuté z DB. Když někdo něco chce změnit tak jednodušše to přepíše a uloží, ale nefunguje to tak. Děkuji všem za rady
$q = mysql_query("SELECT * FROM test WHERE prihlasovaci_jmeno ='".$riadok."'") OR die(mysql_error());
$p = mysql_fetch_array($q);
// var_dump($p);
?>
if (isset($_POST) and $_POST=="send") {
send();
} else {
change($p);
}
//switch ($action){
//case "send":
//send();
//break;
//default:
//change($p);
//break;
//}
function change($p){
?>
Přihlašovací jméno
Email
Staré heslo
Nové heslo
Potvrzení nového hesla
Ulice
Číslo popisné
Město
PSČ
}
function send(){
$prihlasovaci_jmeno=$_POST;
$email=$_POST;
$stare_heslo=$_POST;
$nove_heslo=$_POST;
$potvrzeni_noveho_hesla=$_POST;
$ulice=$_POST;
$cislo_popisne=$_POST;
$mesto=$_POST;
$psc=$_POST;
if (strlen($prihlasovaci_jmeno) < 1 || strlen($email) < 1 || strlen($stare_heslo) < 1 || strlen($nove_heslo) < 1 || strlen($potvrzeni_noveho_hesla) < 1) {
echo "
Údaje nejsou správně uvedené, prosím zkontrolujte je! Zpět











";
}elseif($nove_heslo != $potvrzeni_noveho_hesla){
echo "
Nové heslo se neshoduje s potvrzením nového hesla! Zpět











";
}else{
require_once("config2.php");
mysql_select_db("d63561_db2");
$exec="select prihlasovaci_jmeno from test where prihlasovaci_jmeno = '$_POST' and prihlasovaci_heslo = md5('$_POST') and email = '$_POST'";
$result=mysql_query($exec);
$rs=mysql_fetch_object($result);
if($rs){
$exec="update test set prihlasovaci_heslo=md5('$nove_heslo') where prihlasovaci_jmeno='$_POST'";
mysql_query($exec);
//echo $exec;
//echo mysql_error();
echo "
Heslo bylo úspěšně změneno! Zpět na hlavní stranu


























";exit;
}else{
echo "
Přihlašovací jméno, přihlašovací heslo nebo email jste špatně zadali! Zpět


























";exit;
}
}
if (strlen($prihlasovaci_jmeno) < 1 || strlen($email) < 1 || strlen($ulice) < 1 || strlen($cislo_popisne) < 1 || strlen($mesto) < 1 || strlen($psc) < 1) {
echo "
Údaje nejsou správně uvedené, prosím zkontrolujte je! Zpět











";
}else{
require_once("config2.php");
mysql_select_db("d63561_db2");
$exec="select prihlasovaci_jmeno from test where prihlasovaci_jmeno = '$_POST' and email = '$_POST'";
$result=mysql_query($exec);
$rs=mysql_fetch_object($result);
if($rs){
$exec="update test set ulice='$ulice' AND cislo_popisne='$cislo_popisne' AND mesto='$mesto' AND psc='$psc' where prihlasovaci_jmeno='$_POST'";
mysql_query($exec);
//echo $exec;
//echo mysql_error();
echo "
Ulice, číslo popisné, město nebo PSČ bylo změněné! Zpět na hlavní stranu


























";exit;
}else{
echo "
Přihlašovací jméno, přihlašovací heslo nebo email jste špatně zadali! Zpět


























";exit;
}
}
}
?>
Ukázka formuláře jak vypadá (údaje jsou již předepsané automaticky když je přihlášen):
11572
9. 6. 2014 14:03:04
https://webtrh.cz/diskuse/dve-podminky-pod-sebou-a-nastave-prvni-nebo-druha#reply1030478
trosa
verified
rating uzivatele
(4 hodnocení)
9. 6. 2014 14:38:53
Nekolik rad:
1) NEPIS TAKHLE WEBY - proste sice PHP tohle umi, ze zplacas kod phpka a do toho kusy stranek, ale pokud mas vic nez par souboru, ztratis se v tom a nevyznas se. Pokud se ucis, zapomen na to a delej to fakt jinak. Pokud by jsi tohle prevedl u me jako referenci, letis.
2) nerozumim proc si priradis promenne datama z POST a pak pouzivas zase pole POST namisto tech promennych
3) rika ti neco SQL inject? jinymi slovy - pokud znam tento tvuj kus SQL kodu, muzu si smazat klidne celou databazi projektu tim, ze ti vyplnim do prihlasovaciho jmena formulare treba ';drop database test; - na data co cpes do MySQL pouzivej fci mysql_escape_string pripadne pokud to je cislo pak $promena_cislo+=0; - aneb pricti 0 a tim se ti to pretypuje ze stringu na cislo a balast se tam nedostane
4) v tom druhem updatu, proc tam mas set nec=hodnota AND neco2=hodnota2 - nema tam byt CARKA?
5) hadam ze prvni podminka na chybu se pusti proto, ze pokud nemenis heslo, tak nechavas pole prazdna a tim ti to rve chybu - mas proste chybu v logickem postupu ktery jsi si vymyslel.
TR
9. 6. 2014 14:38:53
https://webtrh.cz/diskuse/dve-podminky-pod-sebou-a-nastave-prvni-nebo-druha#reply1030477
kulisek926
verified
rating uzivatele
9. 6. 2014 14:57:57
Mám pár souborů. Vyznám se v tom takže o to strach nemusíte mit.Takže neučím se. Mám už něco za sebou. Bohužel neživím se tím a nejsem nějaký profesionál. Slyšel jsem o tom inject. Projekt není spuštěný a opraví se to co píšete. Předělám tedy ty AND na čárky. Ta chyba bude díky tomu co píšete. Poradíte mi tedy s tím co potřebuji? Potřebuji poradit jak to opravit. Potřebuji to opravit, aby to fungovalo jak píšu. Ano ta první podmínka bohužel zahraje, ale i ta druhá nefunguje jak má. Tak budu rád za ty, kteří mi poradí jak to opravit tak aby to fungovalo jak píšu. Děkuji
9. 6. 2014 14:57:57
https://webtrh.cz/diskuse/dve-podminky-pod-sebou-a-nastave-prvni-nebo-druha#reply1030476
Mno ... ehm pouziju kod tveho kmene
// pokud se hesla shoduji a maji min 5 znaku, nastavi se promenna $EX
if( $heslo == $kontrolahesla and strlen($heslo) > 5 ) $EX = ", heslo='$heslo' "; else $EX = "";
...
// tu pak pouzijes v jednom update
$exec=" update test set ulice='$ulice', cislo_popisne='$cislo_popisne', mesto='$mesto', psc='$psc' $EX where prihlasovaci_jmeno='$prihlasovaci_jmeno' ";
Snad ti to jako nakopnuti staci, jinak ten kod je fakt des a hruza
9. 6. 2014 17:48:24
https://webtrh.cz/diskuse/dve-podminky-pod-sebou-a-nastave-prvni-nebo-druha#reply1030475
kulisek926
verified
rating uzivatele
9. 6. 2014 18:28:20
Tak hesla můžou být i kratší než 5 znaků to je si myslím zbytečné nastavovat.
Tu je opravdu zbytečné se někoho na něco ptát. Místo rad jste chytří, že je to děs a hrůza. To jsem se neptal a je to takhle moje věc. Jsem rád za rady, ale ne tohoto typu. Jinak nakopnutí nepochopil jsem co jsi tím chtěl říct, ale tak to je moje chyba ne tvoje bohužel. Neživím se tím a chtěl jsem poradit a ne nakoupnout. Děkuji
9. 6. 2014 18:28:20
https://webtrh.cz/diskuse/dve-podminky-pod-sebou-a-nastave-prvni-nebo-druha#reply1030474
Holi
verified
rating uzivatele
(13 hodnocení)
9. 6. 2014 20:40:43
Přepsal jsem to celé, něco je tam zbytečně, ale vycházel jsem z původního kódu
if (isset($_POST)) {
$prihlasovaci_jmeno=$_POST;
$email=$_POST;
$stare_heslo=$_POST;
$nove_heslo=$_POST;
$potvrzeni_noveho_hesla=$_POST;
$ulice=$_POST;
$cislo_popisne=$_POST;
$mesto=$_POST;
$psc=$_POST;
if ($stare_heslo != "" AND $nove_heslo != "" AND $potvrzeni_noveho_hesla != "") {
if ($prihlasovaci_jmeno == "" OR $email == "" OR $stare_heslo == "" OR $nove_heslo == "" OR $potvrzeni_noveho_hesla == "") {
echo '
Údaje nejsou správně uvedené, prosím zkontrolujte je! Zpět











';
die();
}
elseif ($nove_heslo != $potvrzeni_noveho_hesla) {
echo '
Nové heslo se neshoduje s potvrzením nového hesla! Zpět











';
die();
}
else {
require_once("config2.php");
mysql_select_db("d63561_db2");
$sql = mysql_query("SELECT prihlasovaci_jmeno FROM test WHERE prihlasovaci_jmeno = '".$_POST."' AND prihlasovaci_heslo = '".md5($_POST)."' AND email = '".$_POST."'") or die(mysql_error());
$rs = mysql_fetch_object($sql);
if ($rs) {
$sql = mysql_query("UPDATE test SET prihlasovaci_heslo = '".md5($nove_heslo)."' WHERE prihlasovaci_jmeno = '".$_POST."'") or die(mysql_error());
echo '
Heslo bylo úspěšně změneno! Zpět na hlavní stranu


























';
exit;
}
else {
echo '
Přihlašovací jméno, přihlašovací heslo nebo email jste špatně zadali! Zpět


























';
exit;
}
}
}
if ($prihlasovaci_jmeno == "" OR $email == "" OR $ulice == "" OR $cislo_popisne == "" OR $mesto == "" OR $psc == "") {
echo '
Údaje nejsou správně uvedené, prosím zkontrolujte je! Zpět











';
die();
}
else {
require_once("config2.php");
mysql_select_db("d63561_db2");
$sql = mysql_query("SELECT prihlasovaci_jmeno FROM test WHERE prihlasovaci_jmeno = '".$_POST."' AND email = '".$_POST."'") or die(mysql_error());
$rs = mysql_fetch_object($sql);
if ($rs) {
$sql = mysql_query("UPDATE test SET ulice = '".$ulice."', cislo_popisne = '".$cislo_popisne."', mesto = '".$mesto."', psc = '".$psc."' WHERE prihlasovaci_jmeno = '".$_POST."'") or die(mysql_error());
echo '
Ulice, číslo popisné, město nebo PSČ bylo změněné! Zpět na hlavní stranu


























';
exit;
}
else {
echo '
Přihlašovací jméno, přihlašovací heslo nebo email jste špatně zadali! Zpět


























';
exit;
}
}
}
$sql = mysql_query("SELECT * FROM test WHERE prihlasovaci_jmeno = '".$riadok."'") or die(mysql_error());
$row = mysql_fetch_array($sql);
?>
Přihlašovací jméno
Email
Staré heslo
Nové heslo
Potvrzení nového hesla
Ulice
Číslo popisné
Město
PSČ
9. 6. 2014 20:40:43
https://webtrh.cz/diskuse/dve-podminky-pod-sebou-a-nastave-prvni-nebo-druha#reply1030473
Jan Kuthan
verified
rating uzivatele
(48 hodnocení)
9. 6. 2014 21:16:58
Mazec
9. 6. 2014 21:16:58
https://webtrh.cz/diskuse/dve-podminky-pod-sebou-a-nastave-prvni-nebo-druha#reply1030472
Petr Homoky
verified
rating uzivatele
(7 hodnocení)
9. 6. 2014 22:08:04
Tohle si dávám do záložek pro chvíle, kdy si budu připadat jako bastlič.
9. 6. 2014 22:08:04
https://webtrh.cz/diskuse/dve-podminky-pod-sebou-a-nastave-prvni-nebo-druha#reply1030471
kulisek926
verified
rating uzivatele
9. 6. 2014 22:26:24
Tak již to tu je. Títmo veřejně děkuji tomu člověku, protož emi pomohl. Děkuji moc je to tedy neaktuální.
Doporučuji ho, pracuje kvalitně rychle a levně
9. 6. 2014 22:26:24
https://webtrh.cz/diskuse/dve-podminky-pod-sebou-a-nastave-prvni-nebo-druha#reply1030470
Pustit tento kód kamkoliv do produkce skončí tragédií.
Porušujete vpodstatě všechny zásady programování, které existují.
Váš kód je nečitelný, nebezpečný, neudržovatelný a v neposlední řadě i chybný.
Nemá smysl vám radit s žádným konkrétním dotazem, protože tomuto špagetovému kódu není pomoci.
9. 6. 2014 22:50:17
https://webtrh.cz/diskuse/dve-podminky-pod-sebou-a-nastave-prvni-nebo-druha#reply1030469
kulisek926
verified
rating uzivatele
10. 6. 2014 15:30:43
Člověk chtěl poradit. Jestli mám špatný kód je to můj problém ne váš. Chtěl jsem poradit a opravdu mi nepomůže takové řeči, že je to špatné atd. Nejsem profesionál a už to nebudu opakovat. Děkuji, ale příště se na tento web vykašlu, protože tu nikdoo nepomůže. Děkuji
10. 6. 2014 15:30:43
https://webtrh.cz/diskuse/dve-podminky-pod-sebou-a-nastave-prvni-nebo-druha#reply1030468
Fido123
verified
rating uzivatele
(13 hodnocení)
10. 6. 2014 15:35:50
Napsal kulisek;1096791
Člověk chtěl poradit. Jestli mám špatný kód je to můj problém ne váš. Chtěl jsem poradit a opravdu mi nepomůže takové řeči, že je to špatné atd. Nejsem profesionál a už to nebudu opakovat. Děkuji, ale příště se na tento web vykašlu, protože tu nikdoo nepomůže. Děkuji
Vlk taky sliboval.
10. 6. 2014 15:35:50
https://webtrh.cz/diskuse/dve-podminky-pod-sebou-a-nastave-prvni-nebo-druha#reply1030467
trosa
verified
rating uzivatele
(4 hodnocení)
10. 6. 2014 15:47:13
Fido123 - dobre ty :-)
Kulicku - ja jsem se ti snazil poradit tim ze te nasmeruju co mas udelat, pripadne nad cim se zamyslet, pripadne odpovedi napsat sem, pokud te po jejich zodpovezeni nenapadne reseni. Ale nestalo se tak, takze tezko cekat dalsi pomoc. Pokud jsi to chtel UDELAT, mas to psat do poptavek.
10. 6. 2014 15:47:13
https://webtrh.cz/diskuse/dve-podminky-pod-sebou-a-nastave-prvni-nebo-druha#reply1030466
Pro odpověď se přihlašte.
Přihlásit