22. november 2006 - 02:54Der er
30 kommentarer og 1 løsning
Lige lidt hjælp til en "glemt brugerinfo function"
Hejsa eksperter, jeg har siddet og arbejdet hårdt på min side og øver mig i php, men nu er jeg desværre rendt ind i en mur som bare ikke vil stoppe med at gi mig fejl så håber en af jer kan hjælpe mig måske.
koden:
function forgotPass($forgot) { $forgot = $_POST['forgot'];
if(isset($_POST['sendPass'])) { $sql = mysql_select("SELECT userNick, userPass FROM blabla WHERE email LIKE '" . $email . "' OR userNick LIKE '" . $email . "' LIMIT 1"); if(mysql_num_rows($query) > 0) { $row = mysql_fetch_assoc($sql);
$msgMail = "Her er din brugerinfo fra blabla.dk<br><br>".$userNick."<br>".$userPass."";
mail($userMail,"Din bruger information fra blabla",$msgMail, "From: null@blabla.dk\nX-Mailer:blabla.dk") or die("FEJL");
return aok("Brugerinfo er sendt til <b>".$userMail."</b>"); } else echo "E-Mail adressen er ikke registreret hos blabla.dk, tjek om du eventuelt har skrevet forkert :)"; }
}
Når jeg så prøver at se om det virker får jeg denne fejl :
Warning: Missing argument 1 for forgotPass(), called in c:\programmer\apache group\Apache\htdocs\blabla\getpass.php on line 2 and defined in c:\programmer\apache group\Apache\htdocs\blabla\func.php on line 287
og her er den side som prøver at hente informationen frem:
Er der nogle der kan fortælle mig hva det kan være der laver ged i den ? Er måske ikke den bedste til at forklare mit problem så hvis i mangler nået info så må i skrive det ?? :)
Tjah, du siger jo i din definition af funktionen, at der skal et parameter med, men du sender ikke noget (og overskriver det også som det første i din funktion). Ret derfor første linie i din funktion:
Ja oki :) Nu er fejlen så forsvundet men der sker ingenting, forstået på det måde at har jeg lavet den skal fortælle hvis det virker ved at sige at Brugerinfo er sendt til <b>".$userMail."</b> og hvis der ikke findes nogen mail med det navn skal den skrive echo error("E-Mail adressen er ikke registreret hos SexLamerZ.dk, tjek om du eventuelt har skrevet forkert :)"); - Men siden er bare tom :S
function forgotPass() { $forgot = $_POST['forgot'];
if(isset($_SESSION['userPass'])) { $sql = mysql_select("SELECT userNick, userPass FROM blabla WHERE userMail LIKE '" . $userMail . "' OR userNick LIKE '" . $userMail . "' LIMIT 1")or die(mysql_error()); if(mysql_num_rows($sql) > 0) { $row = mysql_fetch_assoc($sql);
$msgMail = "Her er din brugerinfo fra blabla.dk<br><br>".$row[userNick]."<br>".$row[userPass]."";
mail($userMail,"Din bruger information fra blabla.dk",$msgMail, "From: null@blabla.dk\nX-Mailer:blabla.dk") or die("FEJL");
return aok("Brugerinfoen er nu sendt til <b>".$userMail."</b>"); } else echo error("E-Mail adressen er ikke registreret hos blabla.dk, tjek om du eventuelt har skrevet forkert :)"); }
}
Har nok leget lidt mere med den, men intet giver mig nået info på siden :S
Oki nu har jeg leget en lille smule mere med den men får nu en ny fejl:
function forgotPass() {
if(isset($_POST['userPass'])) { $sql = mysql_select("SELECT userNick, userPass FROM blabla WHERE userMail LIKE '" . $userMail . "' OR userNick LIKE '" . $userMail . "' LIMIT 1")or die(mysql_error()); if(mysql_num_rows($sql) > 0) { $row = mysql_fetch_assoc($sql);
$msgMail = "Her er din brugerinfo fra blabla.dk<br><br>".$row[userNick]."<br>".$row[userPass]."";
mail($userMail,"Din bruger information fra Blabla.dk",$msgMail, "From: null@blabla.dk\nX-Mailer:blabla.dk") or die("FEJL");
return aok("Brugerinfoen er nu sendt til <b>".$userMail."</b>"); } else echo error("E-Mail adressen er ikke registreret hos Blabla, tjek om du eventuelt har skrevet forkert :)"); }
}
?>
Den påstår så at jeg har fejl i den her linje eller Call to undefined function mysql_select() - $sql = mysql_select("SELECT userNick, userPass FROM blabla WHERE userMail LIKE '" . $userMail . "' OR userNick LIKE '" . $userMail . "' LIMIT 1")or die(mysql_error()); if(mysql_num_rows($sql) > 0)
Oki så langt så godt :P Nu får jeg da en ny fejl : E-Mail adressen er ikke registreret hos Blabla, tjek om du eventuelt har skrevet forkert :), Meeeen email adressen er i systemet :S Og der kommer der ikke den rigtige besked, den sender den samme :S
Jeg kan ikke se, hvor du har fået variablen $userMail fra, i funktionen, du sender den ikke med, og du har ikke erklæret nogle globals, så jeg vil skyde på at det er der du får fejlen
$msgMail = "Her er din brugerinfo fra blabla.dk<br><br>".$row[userNick]."<br>".$row[userPass]."";
mail($userMail,"Din bruger information fra blabla.dk",$msgMail, "From: null@blabla.dk\nX-Mailer:blabla.dk") or die("FEJL");
return aok("Brugerinfoen er nu sendt til <b>".$userMail."</b>"); } else echo error("E-Mail adressen er ikke registreret hos blabla, tjek om du eventuelt har skrevet forkert :)"); }
}
Har rettet koden til det her men det virker stadig ikke :S men som sagt ved ikke om jeg fortæller variablen at den skal finde userMail i DBen rigtigt eller om jeg mangler nået?
"SELECT userNick, userPass FROM blabla WHERE userMail='" . $userMail . "' LIMIT 1"
Men $userMail findes ingen steder, hvis det er en variabel du har fået med som en post-variabel (hvilket jeg vil tro det er), skal du skrive:
"SELECT userNick, userPass FROM blabla WHERE userMail='" . $_POST["userMail"] . "' LIMIT 1"
Ellers kan du jo forsøge at skrive linien ud, så du evt kan se hvordan din sql-forespørgsel ser ud, og teste den direkte i din database, hvis du mener den burde gi' resultat:
die("SELECT userNick, userPass FROM blabla WHERE userMail='" . $_POST["userMail"] . "' LIMIT 1");
Ovenstående linie stopper eksekveringen af dit program og udskriver din sql (med min modificering), såt den evt ind lige over din udførelse af sql'en.
hehe nu har jeg prøvet at rette linjen og jeg har prøvet at lave en die og begge giver tom side. dvs det virker ikke. Du kan lige få alt det jeg har... Har sikkert lavet masser af fejl hehe:
$msgMail = "Her er din brugerinfo fra blabla.dk<br><br>".$row[userNick]."<br>".$row[userPass]."";
mail($userMail,"Din bruger information fra blabla.dk",$msgMail, "From: null@blabla.dk\nX-Mailer:blabla.dk") or die("FEJL");
return aok("Brugerinfoen er nu sendt til <b>".$userMail."</b>"); } else echo error("E-Mail adressen er ikke registreret hos blabla, tjek om du eventuelt har skrevet forkert :)"); }
Jeg formoder at funktionen forgotPass() findes i enten head.php eller foot.php. Men, det der giver dig balladen er, at du kun har den ene variabel du anvender i din form, med. Prøv at udskifte din forgotPass-funktion med nedenstående, og se om det ikke hjælper:
function forgotPass() { if(!empty($_POST['email'])) { $sql = mysql_select("SELECT userNick, userPass FROM blabla WHERE userMail LIKE '".$_POST['email']."' LIMIT 1")or die(mysql_error()); if(mysql_num_rows($sql) > 0) { $row = mysql_fetch_assoc($sql);
$msgMail = "Her er din brugerinfo fra blabla.dk<br><br>".$row[userNick]."<br>".$row[userPass]."";
mail($userMail,"Din bruger information fra Blabla.dk",$msgMail, "From: null@blabla.dk\nX-Mailer:blabla.dk") or die("FEJL"); return aok("Brugerinfoen er nu sendt til <b>".$_POST['email']."</b>"); } else { echo error("E-Mail adressen (".$_POST['email'].") er ikke registreret hos Blabla, tjek om du eventuelt har skrevet forkert :)"); } } }
Oki :) Så ved jeg det, men ved sQ ikke lige hvordan pokker jeg skal lave det så den tjekker om der f.eks er @ tegn med og det.. Har en som tjekker mailen i min func.php. Men skal kun ha den til at fortælle at man har angive en rigtig email adresse :P meeen lige hvordan jeg kringler den aner jeg ikke
Vil nok foreslå at du anvender et javascript og noget regular expression til at tjekke det, inden du sender, så kan brugeren blive oplyst om fejlen og koden stoppes, inden formen submittes (derved sparer du også cpu-tid på din server ;)
function validateEmail() { var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; if(!filter.test(tmp[i].value)) { alert("Email ikke korrekt"); return false; }else { //If u forgot ur userinfo function glemtPass() { if(isset($_POST['userMail'])) { $sql = mysql_query("SELECT userNick, userPass FROM blabla WHERE userMail='" . $_POST["userMail"] . "' LIMIT 1")or die(mysql_error()); if(mysql_num_rows($sql) > 0) { $row = mysql_fetch_assoc($sql);
$msgMail = "Her er din brugerinfo fra blabla.dk<br><br>".$row[userNick]."<br>".$row[userPass]."";
mail($userMail,"Din bruger information fra blabla",$msgMail, "From: null@blabla.dk\nX-Mailer:blabla.dk") or die("FEJL"); return aok("Brugerinfoen er nu sendt til <b>".$userMail."</b>"); return true;
} else echo error("E-Mail adressen er ikke registreret hos blabla, tjek om du eventuelt har skrevet forkert :)"); return false; } }
}
}
Sådan der har jeg sat den sammen nu får jeg så bare en :
Parse error: parse error, unexpected T_VAR in c:\programmer\apache group\Apache\htdocs\blabla\func.php on line 287
Den skal ikke ind i din php-kode. Du skal skrive det ind i et script på den side, hvor du har din for, og kalde det on submit. Scriptet skal være imellem <head> og </head> på din side:
<script type='text/javascript'><!-- function Validate() { var goodEmail = document.getElementById('email').value.match(/\b(^(\S+@).+((\.com)|(\.net)|(\.edu)|(\.mil)|(\.gov)|(\.org)|(\..{2,2}))$)\b/gi); if (goodEmail){ return true; } else { alert('Please enter a valid e-mail address.'); document.getElementById('email').focus(); document.getElementById('email').select(); return false; } } --></script>
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.