Spørgsmål omkring glemt password

Tags:    mysqi

<< < 12 > >>
Prøver at lave en funktion som kan sende et nyt password til en bruger.
Men har lidt problemer med at få det til at virke.
Hvad gør jeg galt?

Får med denne kode:


Fold kodeboks ind/udKode 


Følgende fejl:
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 09.03.2016 15:46 af Bruger #17644
12 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 15 karma
Sorter efter stemmer Sorter efter dato
$pass_ny = rand();
her ville jeg bruge en rigtig function der generarer et komplex password, og ikke bare et tal

jeg ville gøre dette
$pass_ny = randPass();
functionen ligger her http://php.net/manual/en/function.shuffle.php#95414

men til dit spm

if ($stmt = $db->mysqli->prepare('SELECT * FROM rytter WHERE ryttermail = ?')) {
if ($stmt = $this->mysqli->prepare('UPDATE rytter SET password=? WHERE ryttermail=?')) {

er det lagt ind i en class ??

så vile jeg tro
$db->mysqli->prepare
skal være
$this->mysqli->prepare

altså
if ($stmt = $this->mysqli->prepare('SELECT * FROM rytter WHERE ryttermail = ?')) {

tilføjet

ellers forvendter jeg at disse linjer
if ($stmt = $db->mysqli->prepare('SELECT * FROM rytter WHERE ryttermail = ?')) {
if ($stmt = $this->mysqli->prepare('UPDATE rytter SET password=? WHERE ryttermail=?')) {


skal se sådan ud
if ($stmt = $mysqli->prepare('SELECT * FROM rytter WHERE ryttermail = ?')) {
if ($stmt = $mysqli->prepare('UPDATE rytter SET password=? WHERE ryttermail=?')) {





Indlæg senest redigeret d. 09.03.2016 14:43 af Bruger #16075

Funktionen med randPass() - kan jeg bare lægge den ind øverst på siden så??

ja, men husk at fjerne public foran function, da du ikke har den liggende i en class


OK så du kalder din connection for $db

se skal dette
if ($stmt = $db->mysqli->prepare('SELECT * FROM rytter WHERE ryttermail = ?')) {
if ($stmt = $this->mysqli->prepare('UPDATE rytter SET password=? WHERE ryttermail=?')) {


se sådan ud
if ($stmt = $db->prepare('SELECT * FROM rytter WHERE ryttermail = ?')) {
if ($stmt = $db->prepare('UPDATE rytter SET password=? WHERE ryttermail=?')) {




ln 96
php?>
er der vist sneget sit et php ind
?>

echo 'Der opstod en fejl i erkl�¦ringen: ' . $this->mysqli->error;
skal se sådan ud
echo 'Der opstod en fejl i erkl�¦ringen: ' . $db->error;


$besked = str_replace("%%brugernavn", $rytternavn, $besked);
skal vel være
$besked = str_replace("%%brugernavn", $brugernavn, $besked);

jeg har lavet en del små rettelser og testudskrivninger, prøv at kigge på den samlede code nu, og afprøv
Fold kodeboks ind/udKode 

min bruger får et nyt pw og det md5'et pw bliver opdateret i db

tilføjet 17:25
for bedre at forstå din code kunne du læse denne guide
http://www.eksperten.dk/guide/1480
som omhandler Prepare Statement, som din code anvender, hvilke er noget af det nye der er kommet til i mysqli, og det er klart forbedret i PDO





Indlæg senest redigeret d. 09.03.2016 17:25 af Bruger #16075
Du skal lige pakke din kode ind i udviklerens code blokke

Jeg tror du mangler et $ foran din mysqli men det er et umiddelbar gæt uden at have tjekket det nærmere.



Funktionen med randPass() - kan jeg bare lægge den ind øverst på siden så??





Indlæg senest redigeret d. 09.03.2016 16:03 af Bruger #17644
Hmm....når jeg sætter funktionen med password ind, så får jeg ingen e-mail når jeg tester (men den melder heller ikke fejl)

Samlet kode som den er nu:
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 09.03.2016 16:12 af Bruger #17644
Nu har jeg afprøvet koden, og jeg får brugeren opdateret med nyt password - men jeg får bare ikke nogen mail tilsendt.

glemt.php åbner bare med denne tekst øverst:
Fold kodeboks ind/udKode 







jeg har lavet lidt om i dine headers, prøv at indsætte denne while løkke i stedet for den nuværende
(utested)
Fold kodeboks ind/udKode 


ellers kig lidt på
http://php.net/manual/en/function.mail.php




Hmm - det fjerne teksten, men der sendes ingen mail (password bliver stadig rettet i databasen)




det fjerne teksten,

ja udskrivningen er fjernet !!

tester du lokalt eller på din webserver ude i byen ?? (skal være den ude i byen)

erstat
Fold kodeboks ind/udKode 

med
Fold kodeboks ind/udKode 

har du set i din spam folder ??



se om din webhost har en FAQ omkring mail

se på http://dk.php.net/manual/en/function.mail.php
afprøv
Example #1 Sending mail.
Example #2 Sending mail with extra headers.
Example #4 Sending HTML email

prøv at få disse til at virke




<< < 12 > >>
t