Skocz do zawartości

Formularz php - gdzie tu jest błąd?


Recommended Posts

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 ---
}
}
?>
Link to post
Share on other sites

$email = $glowne['email'];
-&amp;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 przez maden
  • Popieram 1
Link to post
Share on other sites

$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ć.

Link to post
Share on other sites

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 przez maden
Link to post
Share on other sites

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 przez Alfons
Link to post
Share on other sites

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 przez maden
Link to post
Share on other sites

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 ---
}

?> 
Link to post
Share on other sites

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ą.

Gość
Odpowiedz w tym wątku...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...