Sonymann Skrevet 23. mai 2004 Skrevet 23. mai 2004 Jeg har skrevet et skript som kan gi brukere et nytt passord dersom det er glemt. Men jeg får ikke til det der med if. Kan noen hjelpe meg, og si hva som er feil? <?php function makeRandomPassword() { $salt = "abchefghjkmnpqrstuvwxyz0123456789"; srand((double)microtime()*1000000); $i = 0; while ($i <= 7) { $num = rand() % 33; $tmp = substr($salt, $num, 1); $pass = $pass . $tmp; $i++; } return $pass; } $random_password = makeRandomPassword(); $cryptpassword = crypt($random_password); //logger på database $connection = mysql_connect(HOST, USER, PASSWORD) or die("Umulig å få kontakt med database"); //Velger database mysql_select_db(DB); //Sender setningen mot database som skal hente ut infoen $setning = mysql_query("SELECT * FROM brukere WHERE epost='$_POST[epost]'") or die("En feil oppstod: ".mysql_error()); $numberrows = mysql_num_rows($setning); if $numberrows == 0 { while($sql = mysql_fetch_array($setning)) { mail( "$sql[epost]", "Nytt passord", "Du får denne e-posten fordi du har bedt om et nytt passord hos LoCost Virtual Airline. Dersom dette ikke er tilfellet, ber vi deg se bort fra denne e-posten, og slette den umiddelbart. -- Ditt nye passord hos LoCost Virtual Airline er $random_password. Før du kan ta dette i bruk, må du aktivere det ved å klikke på denne lenken: http://www.locostva.com/medlemsomrade/aktiverpassord.php?brukerid=$sql[brukerid]&kode=$cryptpassword Dersom du ikke kan klikke direkte på lenken, kan du kopiere den over i adresselinjen i din nettleser. Passordet kan IKKE brukes før dette er gjort. Når du har aktivert passordet, kan du logge inn som normalt med ditt nye passord. Vi anbefaler imidlertid at du skifter passordet ditt umiddelbart etter at du har logget inn. Med vennlig hilsen, LoCost Virtual Airline", "From: [email protected]" ); echo("Ditt nye passord er nå sendt til deg pr. e-post. Det må aktiveres før du kan ta det i bruk."); }} else { print("Ingen brukere står oppført med oppgitt e-postadresse."); } ?>
Loomy Skrevet 23. mai 2004 Skrevet 23. mai 2004 (endret) Endre if $numberrows == 0 til if ($numberrows == 0) Endret 23. mai 2004 av Loomy
rogbiff Skrevet 23. mai 2004 Skrevet 23. mai 2004 function make_password() { $pass = ""; $chars = array( "1","2","3","4","5","6","7","8","9","0", "a","A","b","B","c","C","d","D","e","E","f","F","g","G","h","H","i","I","j","J", "k","K","l","L","m","M","n","N","o","O","p","P","q","Q","r","R","s","S","t","T", "u","U","v","V","w","W","x","X","y","Y","z","Z"); $count = count($chars) - 1; srand((double)microtime()*1000000); for($i = 0; $i < 8; $i++) { $pass .= $chars[rand(0, $count)]; } return($pass); } Et fint passord script.
???????? Skrevet 23. mai 2004 Skrevet 23. mai 2004 Hvis du ikke bruker en veldig gammel versjon av PHP så trenger du ikke å bruke srand() - for hvilken versjon, slå opp i manualen. Den while'en din burde også byttes ut med en for: for($i = 0; $i <= 7; $i++)
Sonymann Skrevet 23. mai 2004 Forfatter Skrevet 23. mai 2004 Takk! Nå virker det! Men jeg (kremt ) trenger litt hjelp med enda et passordskript jeg har skrevet. Dette er et endre-passordskript. Problemet er at det ikke virker. Jeg har prøvd å fikse det så godt jeg klarer, men det bare forblir feil. <? if($_POST['passord1'] == $_POST['passord2']) { $hostname = "HOST"; $user = "USER"; $password = "PASSWORD"; $db = "DB"; $connection = @mysql_connect($hostname, $user, $password) or die("Umulig å få kontakt med database"); @mysql_select_db($db); $cryptgpassord = crypt($_POST['gpassord']); $sjekk_passord = @mysql_query("SELECT passord FROM brukere WHERE passord='$cryptgpassord'") or die("En feil oppstod: ".mysql_error()); if(@mysql_num_rows($sjekk_passord) == 1) { $cryptpassord = crypt($_POST['passord1']); $legger_inn_info = @mysql_query("UPDATE brukere (passord) VALUES ('$cryptpassord') WHERE brukernavn='$_SESSION[brukernavn]'"); if(@mysql_affected_rows($legger_inn_info) == 1) { print("Passordet er endret"); } else { print("Det skjedde en feil. Gå tilbake, og prøv igjen."); } else { print("Ditt gamle passord stemmer ikke med det du oppga. Gå tilbake og prøv på nytt."); }} else { print("De to passordene du oppga stemmer ikke med hverandre. Gå tilbake og prøv på nytt."); }} ?>
Loomy Skrevet 23. mai 2004 Skrevet 23. mai 2004 (endret) Endret litt på sakene. Er litt svidd i hodet etter 2-3 timer med romananalyse på engelsk, men _tror_ det skal funke nå: <? if($_POST['passord1'] == $_POST['passord2']) { $hostname = "HOST"; $user = "USER"; $password = "PASSWORD"; $db = "DB"; $connection = @mysql_connect($hostname, $user, $password) or die("Umulig å få kontakt med database"); @mysql_select_db($db); $cryptgpassord = crypt($_POST['gpassord']); $sjekk_passord = @mysql_query("SELECT passord FROM brukere WHERE passord='$cryptgpassord'") or die("En feil oppstod: ".mysql_error()); if(@mysql_num_rows($sjekk_passord) == 1) { $cryptpassord = crypt($_POST['passord1']); $legger_inn_info = @mysql_query("UPDATE brukere (passord) VALUES ('$cryptpassord') WHERE brukernavn='$_SESSION[brukernavn]'"); if(@mysql_affected_rows($legger_inn_info) == 1) { print("Passordet er endret"); } else { print("Det skjedde en feil. Gå tilbake, og prøv igjen."); } } else { print("Ditt gamle passord stemmer ikke med det du oppga. Gå tilbake og prøv på nytt."); }} else { print("De to passordene du oppga stemmer ikke med hverandre. Gå tilbake og prøv på nytt."); } ?> Endret 23. mai 2004 av Loomy
Sonymann Skrevet 24. mai 2004 Forfatter Skrevet 24. mai 2004 Jeg får det ikke til å fungere. Jeg tror jeg har forenklet det litt nå. Kan noen ta en titt på dette i stedet? (Føler meg rimelig dum) <? if($_POST['passord1'] == $_POST['passord2']) { $hostname = "HOST"; $user = "USER"; $password = "PW"; $db = "DB"; $connection = @mysql_connect($hostname, $user, $password) or die("Umulig å få kontakt med database"); @mysql_select_db($db); $sjekk="SELECT * FROM brukere WHERE brukernavn='$_SESSION[brukernavn]'"; while($sql = @mysql_fetch_array($sjekk)) { $cryptgpassord = crypt($_POST['gpassord']); if($sql[passord] = $cryptgpassord) { $cryptpassord = crypt($_POST['passord1']); $update="UPDATE brukere (passord) VALUES ('$cryptpassord') WHERE brukernavn='$_SESSION[brukernavn]'"; $result= mysql_query($update, $connection) or die ("Could not execute query : $query." . mysql_error()); print("Passordet er endret"); } else { print("Ditt gamle passord stemmer ikke med det du oppga. Gå tilbake og prøv på nytt."); }} else { print("De to passordene du oppga stemmer ikke med hverandre. Gå tilbake og prøv på nytt."); } ?>
Ellingsen Skrevet 24. mai 2004 Skrevet 24. mai 2004 <?if($_POST['passord1'] == $_POST['passord2']) { $hostname = "HOST"; $user = "USER"; $password = "PW"; $db = "DB"; $connection = @mysql_connect($hostname, $user, $password) or die("Umulig å få kontakt med database"); @mysql_select_db($db); $sjekk="SELECT * FROM brukere WHERE brukernavn='$_SESSION[brukernavn]'"; while($sql = @mysql_fetch_array($sjekk)) { $cryptgpassord = crypt($_POST['gpassord']); if($sql[passord] = $cryptgpassord) { $cryptpassord = crypt($_POST['passord1']); $update="UPDATE brukere (passord) VALUES ('$cryptpassord') WHERE brukernavn='$_SESSION[brukernavn]'"; $result= mysql_query($update, $connection) or die ("Could not execute query : $query." . mysql_error()); print("Passordet er endret"); } else { print("Ditt gamle passord stemmer ikke med det du oppga. Gå tilbake og prøv på nytt."); }} else { print("De to passordene du oppga stemmer ikke med hverandre. Gå tilbake og prøv på nytt."); } ?> Tror ihvertfall du må ha if($sql["passord"] = $cryptgpassord) { eller if($sql['passord'] = $cryptgpassord) { istedenfor if($sql[passord] = $cryptgpassord) { men hva er feilmeldinga du får a?
Sonymann Skrevet 24. mai 2004 Forfatter Skrevet 24. mai 2004 Jeg får bare opp en hvit side. Skal teste det du har skrevet.
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå