Autor | Zpráva | ||
---|---|---|---|
perwin Profil |
#1 · Zasláno: 22. 10. 2010, 18:22:00
Ahoj,
mám takovou prosbu. Nevíte někdo prosím, jak opravit tento script, aby fungoval? Slouží pro změnu hesla k účtu na straně přihlášeného uživatele. Script stránky zmenahesla.php: <?php ob_start(); session_start(); if(isset($_POST['sent'])){ $heslo=$_POST['heslo']; $noveh1=$_POST['noveh1']; $noveh2=$_POST['noveh2']; if($heslo=="$_SESSION[heslo]" or $noveh1=="" or $noveh2==""){ $backlink="index.php?page=registrace&Alert=1"; }else{ require "db.php"; $PocetStejnych=mysql_result(mysql_query("SELECT COUNT(*) FROM `uzivatele` WHERE `heslo`='$heslo'), 0); if($PocetStejnych!=0){ $backlink="index.php?page=registrace&Alert=2"; }elseif($noveh1 != $noveh2){ $backlink="index.php?page=registrace&Alert=3"; }else{ $noveh=md5($noveh1); if($web=="http://" or $web==""){ $web=""; } $VlozData=mysql_query("INSERT INTO uzivatele (heslo) VALUES ('$noveh1')") or die (mysql_error()); $backlink="logout.php?logout=yes"; } } }else{ $backlink="index.php?page=registrace&Alert=5"; } header ("Location: $backlink"); ob_end_flush(); ?> Script stránky s inputem na změnu hesla: <form action="zmenahesla.php" method="post"> <input type="hidden" name="sent" value=""/> <input type="password" name="heslo" maxlength="30"/> <strong>Předchozí heslo</strong> <br/> <input type="password" name="noveh1" maxlength="30"/> <strong>Nové heslo</strong> <br/> <input type="password" name="noveh2" maxlength="30"/> <strong>Nové heslo znovu</strong> <br/> <input id="i1" type="submit" name="send" value="Změnit heslo"/> </form> Děkuji |
||
Majkl578 Profil |
#2 · Zasláno: 22. 10. 2010, 18:34:27
Myslím, že místní zvýrazňovač syntaxe ti odpověděl.
|
||
panther Profil |
#3 · Zasláno: 22. 10. 2010, 18:34:56
perwin:
kdyby sis zapnul vypisování chybových hlášek, zjistil bys, že na ř. 13 nemáš uzavřenou závorku. Na 23. řádku ukládáš nové heslo kamsi, tam by měl být spíše UPDATE toho současného uživatele. |
||
perwin Profil |
#4 · Zasláno: 22. 10. 2010, 18:38:52
A jak by prosím vypadal ten script s UPDATE?
|
||
tiso Profil |
#5 · Zasláno: 22. 10. 2010, 18:48:01
perwin: čo za to?
|
||
jenikkozak Profil |
#6 · Zasláno: 22. 10. 2010, 18:54:55
Už jsem měl napsanou odpověď, ale tiso mi ukázal, že bych ti tím nepomohl. Ptáš se na základní věci, máš zásadní neznalosti v jazyce, s nímž pracuješ, nemáš zájem si informace dohledávat, pouze tu čekáš na odpověď. Už jednou jsem s tebou tyhle „blbosti“ řešil, zřejmě to byla chyba.
|
||
perwin Profil |
jak za to?
Tak dík za odpověď. Já mám zájem si informace dohledávat, ale i když si je dohledám, tak to neznamená že to hnedka všechno umím, tak mi prosím poraďte jak ten script napsat. Díky Takže nějak takto? mysql_query("UPDATE uzivatele SET heslo = '$noveh1'") or die (mysql_error()); Opravte mě prosím. Díky Moderátor Joker: 4 příspěvky sloučeny do jednoho.
|
||
jenikkozak Profil |
#8 · Zasláno: 22. 10. 2010, 20:07:39
perwin:
„Takže nějak takto?“ Ne, tahle bys změnil hesla všech uživatelů. Musíš přidat podmínku, kterou vybereš toho daného. UPDATE uživatele SET heslo='$noveh1' WHERE ... Místo těch tří teček dej něco, co o daném uživateli víš - nick nebo id. |
||
perwin Profil |
#9 · Zasláno: 22. 10. 2010, 20:09:13 · Upravil/a: perwin
Takže takhle?
WHERE jmeno = ahoj (to jméno ahoj je jenom příklad) ale jestliže nevím, jaké je jméno toho náhodného uživatele který se rozhodne změnit si heslo, tak to budu muset udělat takhle: WHERE jmeno = '$_SESSION[login]' ? |
||
perwin Profil |
#10 · Zasláno: 22. 10. 2010, 20:26:54
Dal jsem tam
UPDATE uživatele SET heslo='$noveh1' WHERE '$_SESSION[login]' - ale to mi hlásí chybu na stránkách: Access denied for user 'zakaznik'@'localhost' (using password: NO) - což sice asi není chyba týkající se toho co tu teď řešíme, ale docela rád bych věděl proč mi to toto hlásí Díky |
||
Keeehi Profil |
#11 · Zasláno: 23. 10. 2010, 11:07:32
perwin:
„Access denied for user 'zakaznik'@'localhost' (using password: NO)“ Tento problém nevyvolal update, ale už přihlašování do db. Hledej chybu tam. (nejspíše v db.php) |
||
perwin Profil |
#12 · Zasláno: 23. 10. 2010, 11:08:21 · Upravil/a: perwin
Ne, soubor db.php je společný pro registraci, login, diskuzi,... a to funguje
Takže v souboru db.php chyba nebude |
||
perwin Profil |
#13 · Zasláno: 23. 10. 2010, 11:20:13
Jo už jsem to našel a celý script funguje... díky za rady
|
||
Časová prodleva: 12 měsíců
|
|||
davidmyska Profil |
#14 · Zasláno: 11. 10. 2011, 08:00:08
Dobrý den, použil jsem tento kód na svých stránkách, trochu jsem se ho upravil a nechce mi fungovat
zde je můj kód souboru zmenahesla.php <?php ob_start(); session_start(); if(isset($_POST['sent'])){ $heslo=$_POST['heslo']; $noveh1=$_POST['noveh1']; $noveh2=$_POST['noveh2']; if($heslo!="$_SESSION[password]" or $noveh1=="" or $noveh2==""){ echo "Nebyly vyplněny všechny povinné údaje!"; } else{ require "db.php"; $PocetStejnych=mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `password`='$heslo'"), 0); if($PocetStejnych!=0){ } elseif($noveh1 != $noveh2){ echo "Zadané hesla se neshodují!!!"; } else{ $noveh=sha1($noveh1); $VlozData=mysql_query("UPDATE users SET password='$noveh' WHERE '$_SESSION[username]'") or die (mysql_error()); if($VlozData){ echo "Heslo změněno."; } } } } else{ echo "Došlo k chybě v odeslání dat."; } ob_end_flush(); ?> píse mi to chybu: "Notice: Undefined index: password in zmenahesla.php on line 9" a mou hlášhu "Nebyly vyplněny všechny povinné údaje!" i když všechny údaje vyplněny byly |
||
Joker Profil |
#15 · Zasláno: 11. 10. 2011, 09:32:43 · Upravil/a: Joker
davidmyska:
„píse mi to chybu: "Notice: Undefined index: password in zmenahesla.php on line 9" a mou hlášhu "Nebyly vyplněny všechny povinné údaje!"“ Zřejmě heslo do session neukládáte do $_SESSION["password"]. (a když jsme u toho, na ř. 10 by mělo být: …$heslo!=$_SESSION["password"]… )
Upravte si kód pro své stránky. Jinak ale tak jak je to napsané to bude ty poznámky vyhazovat vždycky, když nebude něco vyplněné. Poznámka (notice :-) ), jestli tomu kódu nerozumíte (což naznačuje dotaz), je poměrně riskantní prostě na své stránky převzít kód, se kterým měl někdo problém. |
||
Spectator Profil |
#16 · Zasláno: 11. 10. 2011, 09:41:05 · Upravil/a: Spectator
davidmyska:
Podle všeho není v $_SESSION index password a tím pádem v něm ani nic není, takže se při porovnání nemůže rovnat s heslem v postu Mimochodem co je toto za nářečí a proč se v poslední době na internetu taková slovní spojení množí? Zadané hesla se neshodují!!! |
||
jenikkozak Profil |
#17 · Zasláno: 11. 10. 2011, 10:35:34 · Upravil/a: jenikkozak
davidmyska:
Další věc, kde asi narazíš: $VlozData=mysql_query("UPDATE users SET password='$noveh' WHERE username='$_SESSION[username]'") or die (mysql_error()); Pak také se v první v prvním dotazu zřejmě porovnává shoda hesla, zatímco v update se do databáze ukládá hash hesla. Kromě toho nebude splněna ani ta první podmínka v případě, že v IE někdo formulář odešle Enterem. Nejlepší asi bude se tohoto skriptu vzdát a zkusit napsat něco vlastního. Třeba to nedopadne hůř. :-) |
||
Časová prodleva: 13 let
|
0