Sonymann Skrevet 23. mai 2004 Del 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."); } ?> Lenke til kommentar
Loomy Skrevet 23. mai 2004 Del Skrevet 23. mai 2004 (endret) Endre if $numberrows == 0 til if ($numberrows == 0) Endret 23. mai 2004 av Loomy Lenke til kommentar
rogbiff Skrevet 23. mai 2004 Del 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. Lenke til kommentar
???????? Skrevet 23. mai 2004 Del 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++) Lenke til kommentar
Sonymann Skrevet 23. mai 2004 Forfatter Del 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."); }} ?> Lenke til kommentar
Loomy Skrevet 23. mai 2004 Del Skrevet 23. mai 2004 To else etter hverandre funker vel dårlig Lenke til kommentar
Loomy Skrevet 23. mai 2004 Del 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 Lenke til kommentar
Sonymann Skrevet 24. mai 2004 Forfatter Del 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."); } ?> Lenke til kommentar
Ellingsen Skrevet 24. mai 2004 Del 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? Lenke til kommentar
Sonymann Skrevet 24. mai 2004 Forfatter Del Skrevet 24. mai 2004 Jeg får bare opp en hvit side. Skal teste det du har skrevet. Lenke til kommentar
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å