Alfons 30 Napisano 30 Stycznia 2012 Udostępnij Napisano 30 Stycznia 2012 Chciałem sobie dorobić opcję przypomnij hasło. Jednak formularz coś nie działa! Nie zwraca komunikatu czy wiadomość jest wysłana czy nie. A ja nie wiem w którym miejscu jest błąd. <?php if(empty($_POST['submit'])) { echo ' <table> <form action="" method="post"> <tr>Zapmoniałeś hasła?</tr> <tr> <td><b>E-Mail:</b></td> <td width="100"><input type="text" name="formEmail"/></td> </tr> <tr> <td> </td> <td><input type="submit" name="submit" value="Wyślij"/></td> </tr> </form> </table> '; } else { $sql1 = mysql_query('SELECT `email`, `pass2` FROM `surf_users` WHERE `email`= '.$_POST['formEmail']); while($row1= mysql_fetch_assoc($sql1)){ //twoje dane $email = $glowne['email']; $email2 = $_POST['formEmail']; //dane z formularza $formEmail = $_POST['formEmail']; if(!empty($formEmail)) { //--- poczatek funkcji weryfikujacej adres e-mail --- function checkMail($checkmail) { if(filter_var($checkmail, FILTER_VALIDATE_EMAIL)) { if(checkdnsrr(array_pop(explode("@",$checkmail)),"MX")){ return true; }else{ return false; } } else { return false; } } //--- koniec funkcji --- if(checkMail($formEmail)) { //dodatkowe informacje: ip i host użytkownika $ip = $_SERVER['REMOTE_ADDR']; $host = gethostbyaddr($_SERVER['REMOTE_ADDR']); //tworzymy szkielet wiadomości //treść wiadomości $mailText = "Twoje haslo to: ".$row['pass2']."\nMozesz sie zalogowac na http://surfuj.rzeszow.pl/logowanie.php \n Od: $formEmail ($ip, $host)"; //adres zwrotny $mailHeader = "From: surfuj.rzeszow.pl"; //funkcja odpowiedzialna za wysłanie e-maila @mail($email, 'Przypomnienie hasla kopia', $mailText, $mailHeader) or die(' Bład: wiadomość nie została wysłana'); //dla użytkownika @mail($email2, 'Przypomnienie hasla', $mailText, $mailHeader) or die(' Bład: wiadomość nie została wysłana'); //komunikat o poprawnym wyslaniu wiadomosci echo 'Wiadomość została wysłana!'; } else { echo 'Adres e-mail jest niepoprawny'; } } //--- koniec formularza --- } } ?> Cytuj Link to post Share on other sites
maden 25 Napisano 30 Stycznia 2012 Udostępnij Napisano 30 Stycznia 2012 (edytowane) $email = $glowne['email']; -&gt; odwolujesz sie do tablicy ktorej nie ma. function checkMail($checkmail) { if(filter_var($checkmail, FILTER_VALIDATE_EMAIL)) { if(checkdnsrr(array_pop(explode("@",$checkmail)),"MX")){ return true; }else{ return false; } } else { return false; } } Nie powinno się pisać kodu funkcji w ciele if'ów i tym podobnych tylko na samym początku skryptu. Taka sugestia. Wydaje się że nie masz włączonej obsługi wyświetlania błędów. i przerywa wykonywanie kodu na $email = $glowne['email']; - przypuszczam że tam powinno być $email = $row1['email']; $mailText = "Twoje haslo to: ".$row['pass2']."\nMozesz sie zalogowac na http://surfuj.rzeszow.pl/logowanie.php \n Od: $formEmail ($ip, $host)"; //adres zwrotny powinno być $row1['pass2']; Oceniając kod to jest do d... i pełno nim błędów czysto użytkowych, praktycznych. Edytowane 30 Stycznia 2012 przez maden 1 Cytuj Link to post Share on other sites
Alfons 30 Napisano 30 Stycznia 2012 Autor Udostępnij Napisano 30 Stycznia 2012 $email = $glowne['email']; funkcja jest poprawna bo dobrze zwraca wartość $row1['pass2']; nie może tak być bo wywala błąd w kodzie i się sypie całość Co do kodu, jest to kod z jakieś stronki nie ja go pisałem ale działa, tylko ze przy opcji wysyłania hasła już nie chce tak ładnie chodzić. Cytuj Link to post Share on other sites
maden 25 Napisano 30 Stycznia 2012 Udostępnij Napisano 30 Stycznia 2012 (edytowane) Jestem świadkiem tworzenia nowej translacji języka php.... chyba że a) nie podajesz całości kodu z skryptu. b) jakimś cudem tablica $glowna jest globalna i zapisana w takiej postaci.... Chłopie ten koda który tu podałeś nie ma prawa poddać się procesowi parsowania. Są błędy semantyczne. Jakim cudem odwołanie do zmiennej w tablicy może działać jak ta tablica wcześniej nie jest nigdzie za alokowana. Czarna magia.... musi być $row1 bo tylko taka zmienna jest utworzona a nie jakieś $row. while($row1= mysql_fetch_assoc($sql1)){ Ten kod nie ma nigdy prawa działać poprawnie! U mnie na zajęciach byś jeszcze banie dostał za brak znajomości podstaw języka. zastosuj wszystko co CI kazałem i podaj jaki błąd się pojawia. Włącz obsługę wyświetlania ostrzeżeń i błędów. Edytowane 30 Stycznia 2012 przez maden Cytuj Link to post Share on other sites
Alfons 30 Napisano 1 Lutego 2012 Autor Udostępnij Napisano 1 Lutego 2012 (edytowane) Przerobiłem kod. Problem pojawia się na wartości tekstowej w zapytaniu WHERE $sql1 = mysql_query('SELECT * FROM `surf_users` WHERE `email`= '.$_POST['formEmail']); while($row1= mysql_fetch_array($sql1)){ $test = $row1['pass2'];} $mailText = "Twoje haslo to: $test\nMozesz sie zalogowac na http://surfuj.rzeszow.pl/logowanie.php\n Od: $formEmail ($ip, $host)"; Edytowane 1 Lutego 2012 przez Alfons Cytuj Link to post Share on other sites
maden 25 Napisano 1 Lutego 2012 Udostępnij Napisano 1 Lutego 2012 (edytowane) Błąd sql czy błąd php? ja bym tą linijkę kodu zapisał tak sql1 = mysql_query("SELECT * FROM surf_users WHERE email='".$_POST['formEmail']."'");dlatego że zakładam że email jest typem tekstowym i musi być porównany jako tekst. Edytowane 1 Lutego 2012 przez maden Cytuj Link to post Share on other sites
Alfons 30 Napisano 2 Lutego 2012 Autor Udostępnij Napisano 2 Lutego 2012 wczoraj pomógł mi jeden programista tylko zastosował zamienne cudzysłowia, a cały błąd sprowadzał się do tego zapytania. Ty nie możesz zakładać ze to wartość tekstowa bo pisałem o tym wcześniej! Cały kod wygląda teraz tak! <?php if(empty($_POST['submit'])) { echo ' <table> <form action="" method="post"> <tr>Zapmoniałeś hasła? </tr> <tr> <td><b>E-Mail:</b></td> <td width="100"><input type="text" name="formEmail"/></td> </tr> <tr> <td> </td> <td><input type="submit" name="submit" value="Wyślij"/></td> </tr> </form> </table> '; } else { //twoje dane $email = $glowne['email']; $email2 = $_POST['formEmail']; //dane z formularza $formEmail = $_POST['formEmail']; if(!empty($formEmail)) { //--- poczatek funkcji weryfikujacej adres e-mail --- function checkMail($checkmail) { if(filter_var($checkmail, FILTER_VALIDATE_EMAIL)) { if(checkdnsrr(array_pop(explode("@",$checkmail)),"MX")){ return true; }else{ return false; } } else { return false; } } //--- koniec funkcji --- if(checkMail($formEmail)) { //dodatkowe informacje: ip i host użytkownika $ip = $_SERVER['REMOTE_ADDR']; $host = gethostbyaddr($_SERVER['REMOTE_ADDR']); //tworzymy szkielet wiadomości //treść wiadomości $sql1 = mysql_query('SELECT * FROM `surf_users` WHERE `email`= "'.$_POST['formEmail'].'"'); while($row1= mysql_fetch_array($sql1)){ $haslo = $row1['pass2'];} $mailText = "Twoje haslo to: $haslo\nMozesz sie zalogowac na http://surfuj.rzeszow.pl/logowanie.php\n Od: $formEmail ($ip, $host)"; //adres zwrotny $mailHeader = "From: surfuj.rzeszow.pl"; //funkcja odpowiedzialna za wysłanie e-maila @mail($email, 'Przypomnienie hasla kopia', $mailText, $mailHeader) or die(' Bład: wiadomość nie została wysłana'); //dla użytkownika @mail($email2, 'Przypomnienie hasla', $mailText, $mailHeader) or die(' Bład: wiadomość nie została wysłana'); //komunikat o poprawnym wyslaniu wiadomosci echo 'Wiadomość została wysłana!'; } else { echo 'Adres e-mail jest niepoprawny'; } } //--- koniec formularza --- } ?> Cytuj Link to post Share on other sites
Recommended Posts
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.