Autor | Zpráva | ||
---|---|---|---|
Eflyax Profil |
#1 · Zasláno: 15. 3. 2011, 19:48:13
Ahoj,
potřeboval bych ve své aplikaci pomoct s funkcí změna hesla. Hesla a jména nemám uloženy v databázi ale v souboru, a to takto: <?php ... nějáké příkazy ... if (($Njmeno == "jmeno1" && $Nheslo == "heslo1") || ($Njmeno == "jmeno2" && $Nheslo == "heslo2") || ($Njmeno == "jmeno3" && $Nheslo == "heslo3") || ($Njmeno == "jmeno4" && $Nheslo == "heslo4") || ($Njmeno == "jmeno5" && $Nheslo == "heslo5") || ($Njmeno == "jmeno6" && $Nheslo == "heslo6")) .... další příkazy .... ?> Představoval bych jsi to takto: Otevírat soubor po řádcích v cyklu. Během toho porovnávat jméno v souboru se jménem v session (jeho přihlašovacím jménem). Pokud se jeho jméno najde, vyhledá se jeho straré heslo (přijde formulářem) a nahradí se novým heslem a celé se to uloží. Formulářem tedy přijde staré heslo a 2x nové (kontrola překlepu). ------------- Jak mám ten soubor číst po řádcích, hledat v něm a následně nahrazovat? Řekl bych, že to bude vypadat zhruba takto: <?php $jmeno = $_SESSION['jmeno']; $stare = $_REQUEST['stare']; $nove1 = $_REQUEST['nove1']; $nove2 = $_REQUEST['nove2']; if($nove1 !== $nove2) { echo "Nová hesla nejsou stejná"; } else // nová hesla jsou stejná - vyhledání řádku se jménem uživatele { $soubor = file('login.php'); do { $linka = fgets($soubor); $hledáníJména = strpos ($linka, $jmeno); ??? ... ... } while ($hledáníJména); } } ?> |
||
johnl Profil |
#2 · Zasláno: 15. 3. 2011, 20:15:14 · Upravil/a: johnl
$jmeno[1] = 'jmeno1'; $heslo[1] = 'heslo1'; $jmeno[2] = 'jmeno2'; $heslo[2] = 'heslo2'; $jmeno[3] = 'jmeno3'; $heslo[3] = 'heslo3'; ... $kolik = count($jmeno); for($i=1;$i<=$kolik;$i++){ if($_POST["login"]==$jmeno[$i] and $_POST["password"]==$heslo[$i]){/* Údaje jsou shodné */} } Dá se to napsat mnohem elegantněji, třeba pomocí foreach.. Uložení třeba (to je jedna z těch horších variant): file_put_contents("usr.php",str_replace("$heslo[3] = 'heslo3';","$heslo[3] = 'heslo4';", file_get_contents("usr.php"))); |
||
Tori Profil |
#3 · Zasláno: 15. 3. 2011, 20:36:00
johnl:
V tom replace mají být buď oba řetězce v apostrofech, anebo escapovat dolary. Šlo by použít i standardní formát .ini souborů (ale uložený jako PHP): ; <php // středník = komentář v .ini jmeno1 = "tajné heslo" jmeno2 = "jiné heslo" |
||
Eflyax Profil |
#4 · Zasláno: 15. 3. 2011, 21:03:09
johnl:
Pořád mi to nějak nechce fungovat... Obsah souboru list.php <?php if ( ($Njmeno[1] == "nějakéjméno1" && $Nheslo[1] == "nějakéheslo2") || ($Njmeno[4] == "nějakéjméno1" && $Nheslo[4] == "nějakéheslo2") ) ?> (tento soubor je includovan v jiném souboru, takže není celý - funguje to) A zde skript zmenahesla.php: (převezme data z formuláře a změní heslo) <?php $uzivatel = $_SESSION['jmeno']; $stare = $_REQUEST['stare']; $nove1 = $_REQUEST['nove1']; $nove2 = $_REQUEST['nove2']; if($nove1 !== $nove2) { echo "Nová hesla nejsou stejná"; } else // nová hesla jsou stejná { $soubor = file("list.php"); $kolik = count($Njmeno); for($i=1;$i<=$kolik;$i++) { if($uzivatel == $Njmeno[$i] and $stare == $Nheslo[$i]) { str_replace("$stare","$nove2","$soubor"); echo "Heslo změněno!"; } } } ?> Když to takto spustím, je bílá obazovka. |
||
Časová prodleva: 13 let
|
0