Autor | Zpráva | ||
---|---|---|---|
Chatík Profil |
Ahoj,
potřeboval bych radu proč následující script mi hlásí tuto chybu: Fatal error: Call to undefined function getRandomString() in na vyznačeném řádku. <?php if(!isset($_GET['email'])){ echo'<form action="forgotpassword.php"> Enter Your Email Id: <input type="text" name="email" /> <input type="submit" value="Reset My Password" /> </form>'; } else{ $email=$_GET['email']; include("db.php"); $q="select mail from uzivatele where mail='".$email."'"; $r=mysql_query($q); $n=mysql_num_rows($r); if($n==0){echo "Email id is not registered"; die();} $token=getRandomString(10); $q="insert into tokens (token,email) values ('".$token."','".$email."')"; mysql_query($q); function getRandomString($length) { $validCharacters = "ABCDEFGHIJKLMNPQRSTUXYVWZ123456789"; $validCharNumber = strlen($validCharacters); $result = ""; for ($i = 0; $i < $length; $i++) { $index = mt_rand(0, $validCharNumber - 1); $result .= $validCharacters[$index]; } return $result;} function mailresetlink($to,$token){ $subject = "Forgot Password on example.com"; $uri = 'http://'. $_SERVER['HTTP_HOST'] ; $message = ' <html> <head> <title>Forgot Password For example.com</title> </head> <body> <p>Click on the given link to reset your password <a href="'.$uri.'/reset.php?token='.$token.'">Reset Password</a></p> </body> </html> '; $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; $headers .= 'From: Admin<webmaster@example.com>' . "\r\n"; $headers .= 'Cc: Admin@example.com' . "\r\n"; if(mail($to,$subject,$message,$headers)){ echo "We have sent the password reset link to your email id <b>".$to."</b>"; }} if(isset($_GET['email']))mailresetlink($email,$token); } ?> Samozřejmě že chyba byla mezi klávesnicí a židlí. Volal jsem funkci dřív než byla vůbec vytvořena. Zde už je to správně: <?php if(!isset($_GET['email'])){ echo'<form action="forgotpassword.php"> Enter Your Email Id: <input type="text" name="email" /> <input type="submit" value="Reset My Password" /> </form>'; } else{ $email=$_GET['email']; include("db.php"); $q="select mail from uzivatele where mail='".$email."'"; $r=mysql_query($q); $n=mysql_num_rows($r); if($n==0){echo "Email id is not registered"; die();} function getRandomString($length) { $validCharacters = "ABCDEFGHIJKLMNPQRSTUXYVWZ123456789"; $validCharNumber = strlen($validCharacters); $result = ""; for ($i = 0; $i < $length; $i++) { $index = mt_rand(0, $validCharNumber - 1); $result .= $validCharacters[$index]; } return $result;} $token=getRandomString(10); $q="insert into tokens (token,email) values ('".$token."','".$email."')"; mysql_query($q); function mailresetlink($to,$token){ $subject = "Forgot Password on example.com"; $uri = 'http://'. $_SERVER['HTTP_HOST'] ; $message = ' <html> <head> <title>Forgot Password For example.com</title> </head> <body> <p>Click on the given link to reset your password <a href="'.$uri.'/reset.php?token='.$token.'">Reset Password</a></p> </body> </html> '; $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; $headers .= 'From: Admin<webmaster@example.com>' . "\r\n"; $headers .= 'Cc: Admin@example.com' . "\r\n"; if(mail($to,$subject,$message,$headers)){ echo "We have sent the password reset link to your email id <b>".$to."</b>"; }} if(isset($_GET['email']))mailresetlink($email,$token); } ?> |
||
Bertram Profil |
Chatík:
Volal jsem funkci dřív než byla vůbec vytvořena. Neměl jsi spíše někde překlep? To co popisuješ jako chybu, je v PHP přece možné. <?php // definice funkce až po jejím volání $soucet = secti(5, 7); echo $soucet; function secti($a, $b){ return $a+$b; } |
||
Jan Tvrdík Profil |
#3 · Zasláno: 7. 7. 2015, 22:15:27
Bertram:
To sice ano, ale pouze v případě, že ta funkce je deklarována bezpodmínečně. Následující kód např. nebude fungovat if (TRUE) { $soucet = secti(5, 7); echo $soucet; function secti($a, $b){ return $a+$b; } } |
||
Bertram Profil |
#4 · Zasláno: 8. 7. 2015, 06:21:10
Jan Tvrdík:
Dík za ujasnění, to jsem nevěděl. Ale ani jsem nad tím nikdy nepřemýšlel, protože mě nenapadá důvod, proč bych definoval funkci v nějaké podmínce. |
||
Časová prodleva: 10 let
|
0