| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
Keskustelut - PHP - Sisäänkirjautumis koodi ei toimiJuco 12:42 14.4.12 Käytän kotisivuillani MVnetin "salasanasuojaus ja rekisteröinti" koodia, jota olen hieman muunnellut sopivammaksi sivuilleni. Tuo sisäänkirjautumis koodi ei kuitenkaan toimi, vaikka salasanan kirjoittaisi oikein. (Tulee ilmoitus "Käyttäjätunnusta ei tunnistettu tai salasana on väärä. 2") Rekisteröityessä tekee tuonne rekisteroityneet kansioon sen tunnuksen ja kryptaa salasanan sinne. Missä vika? PHP <?php $salakoodi ="salakoodi"; $siirtosoite = "siirto.php"; $rekistkansio = ".../rekisteroityneet/"; $nimi = $_POST['Etunim']; $omapassword = $_POST['omapassword']; $username = str_replace(" ","", $nimi); $password2 = str_replace(" ", "", $omapassword); $username = strip_tags($nimi); $password2 = strip_tags($omapassword); if (strlen($username) <2) { exit ("Kayttajatunnus liian lyhyt"); } elseif (strlen($password2) <5) { exit ("Salasana liian lyhyt."); } session_start(); // Onko jo kirjautunut if ($_SESSION["accesslevel"] != $salakoodi) { if (file_exists("$rekistkansio"."$username")) { # Salasanan kryptaus $Salasana = md5($password2); # Luetaan kirjautujan tiedoston tiedot $fd = fopen("$rekistkansio"."$username","r"); flock($fd, 1); $salasananyt = fread ($fd, filesize ("$rekistkansio"."$username")); flock($fd, 3); fclose($fd); if($Salasana == $salasananyt) { $_SESSION["accesslevel"] = "$salakoodi"; $_SESSION["username"] = "$username"; header("Location: $siirtosoite"); } else { exit("Käyttäjätunnusta ei tunnistettu tai salasana on väärä."); } } else { exit("Käyttäjätunnusta ei tunnistettu tai salasana on väärä. 2"); } } else { header("Location: $siirtosoite"); } ?> Jari_Kettunen 19:03 14.4.12 CaseSensitiivisyys tullee ensin mieleen Linux-maailmassa tiedostojen nimet pitää kirjoittaa huomioden kirjasinkoko. "Juco" tiedoston nimenä on eri kuin "juco". Windowsissa asialla ei ole merkitystä. eis 21:04 14.4.12 Vähän nätimmällä sisentämisellä oisit ehkä huomannut, että tämä iffi palauttaa false: PHP Tuollaista ei siis löydy. Myöskin tässä kohti: PHP $rekistkansio = ".../rekisteroityneet/"; kolme pistettä ei ehkä ole se mitä haluat, oisko ../rekisteroityneet tai ../../rekisteroityneet? eis 21:05 14.4.12 Myöskin, suosittelisin aina käyttämään kolmen merkin vertailua (=== tai !==) kaksimerkkisen sijaan. Kaksimerkkinen sisältää paljon ikäviä yllätyksiä. |
![]() Haku
|