[php]jak zrobić działający scrypt na mailu


(batmomobil) #1

Witam wszystkich i proszę o pomoc ponieważ mam dwa srypty jeden wysyłający hasło na maila

<?php require 'db.php'; // zmienna przesłana z formularza

$email_to= addslashes($_POST['email_to']);

$query = 'SELECT haslo FROM uzytkownicy WHERE email = "' . $email_to . '"';// `alt` jest hasłem w bazie danych

$result=mysql_query($query);


$count=mysql_num_rows($result);

echo 'Email_to: ' . $email_to;

// jeśli $count =1

if($count==1){


$rows=mysql_fetch_array($result);

$your_password=$rows['haslo'];


// ---------------- WYSYŁANIE E-MAILA ----------------


// wysyłam e-mail do ...

$to=$email_to;


// Temat

$subject="temat e-maila";


// nagłówek

$header="From: twojAdres@gmail.com";


// Wiadomość

$messages.= "zmien haslo \r\n";

$messages.= "Twoje hasło do bazy to $your_password \r\n";	

$sentmail = mail($to,$subject,$messages,$header);

} else{

echo "Nie znaleziono takiego adresu e-mail w naszej bazie";

}

if($sentmail){

echo "Twoje hasło zostało wysłane na twój adres e-mail.";

} else{

echo "Nie mogliśmy wysłać hasła na Twój adres. Spróbuj jeszcze raz";

} ?>[/code]
,a drugi zmiana hasła

[code]<?php echo '
Podaj login: Podaj email: if($_POST['dalej']) { $login = strip_tags(htmlspecialchars(mysql_real_escape_string($_POST['loginek']))); $email = strip_tags(htmlspecialchars(mysql_real_escape_string($_POST['email']))); if(empty($login) || empty($email)) $wiadomosc .= "Uzupełnij wszystkie pola "; if(empty($wiadomosc)) { // sprawdzanie loginu $log = mysql_query("SELECT * FROM uzytkownicy WHERE nick='".$login."'"); $log1 = mysql_num_rows($log); if($log1 === 0) $wiadomosc .= "Podany login nie istieje "; $ema = mysql_query("SELECT * FROM uzytkownicy WHERE email='".$email."'"); $ema1 = mysql_num_rows($ema); if($ema1 === 0) $wiadomosc .= "Podany email nie istnieje "; } } if($_POST['dalej'] and empty($wiadomosc)) { echo ' Podaj nowe hasło Powtórz nowe hasło '; } if($_POST['zapisz']) { $login = strip_tags(htmlspecialchars(mysql_real_escape_string($_POST['login']))); $haslo1 = strip_tags(htmlspecialchars(mysql_real_escape_string($_POST['haslo1']))); $haslo2 = strip_tags(htmlspecialchars(mysql_real_escape_string($_POST['haslo2']))); $haslo1 = md5($haslo1); $haslo2 = md5($haslo2); if( empty($haslo1) || empty($haslo2)) $wiadomosc .= "Uzupełnij wszystkie pola "; if(empty($wiadomosc)) { $zapytanie1 = 'UPDATE uzytkownicy SET haslo= "'.$haslo2.'" WHERE nick="'.$login.'"'; $idzapytania1 = mysql_query($zapytanie1) or die(mysql_error()); $wiadomosc .= "hasło zostało zmienione "; } } echo $wiadomosc; // wysyłanie e-maila ?>

i chcę aby po wysłaniu maila scrypt zmiany działał w mailu w skrzynce pocztowej.Jak zapisać link w skrzynce do folderu ze scryptem(odzyskajhaslo.php) lub wysłać scrypt na maila.


(kostek135) #2

Skrypt nie może działać w skrzynce pocztowej. Po pierwsze wątpię, że każdy serwer SMTP ma interpreter PHP. Po drugie w treści wiadomości daj do niego normalny link. W mailu możesz użyć HTML-a, wstawiasz link w tagach

np. http://adres.domena/odzyskajhaslo.php ten link przekieruje osobę do twojej strony tam, gdzie jest skrypt.


(czytacz) #3

Przepraszam za OT, ale do autora:

Mógłbyś się zdecydować w jakim języku chcesz pisać.

Albo "skrypt" (po polsku), albo "script" (po angielsku).

Słowo "scrypt" raczej nie istnieje.


(batmomobil) #4

Dzięki kostek135 wszystko działa :-D,jedno echo wyświetla się cały czas(hasło zostało zmienione),jak to zmienić żeby wyświetliło się tylko po wykonaniu kodu.Oto ta część kodu:

if($haslo1 != $haslo2) $wiadomosc .= "Hasła są różne
";

}

if(empty($wiadomosc))

{


$zapytanie1 = 'UPDATE `uzytkownicy` SET `haslo`= "'.$haslo2.'" WHERE `nick`="'.$login.'"';

$idzapytania1 = mysql_query($zapytanie1) or die(mysql_error()); 

$wiadomosc .= "hasło zostało zmienione
"; }

echo $wiadomosc;

.


(kostek135) #5

Za mało informacji, daj trochę kodu poprzedzającego ten fragment. Zgaduję, że wynika to z tego ze nie sprawdzasz czy ktoś wysłał formularz, czy nie.

if(empty($wiadomosc)) {

   $zapytanie1 = 'UPDATE `uzytkownicy` SET `haslo`= "'.$haslo2.'" WHERE `nick`="'.$login.'"';

   $idzapytania1 = mysql_query($zapytanie1) or die(mysql_error());

   $wiadomosc .= "hasło zostało zmienione
";

}

Dokładniej biorąc to $wiadomosc jeśli nie wysypie ci nic walidacja (czyli np. w stanie początkowym) to wchodzisz do tego bloku. Generalnie powinien być jeszcze jakiś warunek, przykładowo sprawdzanie czy ktoś kliknął przycisk - realizowane przy pomocy np. tego, że masz jaka wartość hidden w formularzu i ją odczytujesz.

Możesz też np. sprawdzić czy ktoś przesłał hasło to znaczy dodać warunki czy hasło nie jest puste, w stanie początkowym będzie puste, więc nie wejdzie do tego bloku.

Taki sposób walidacji jest najbardziej egzotycznym jaki widziałem, poczytaj może o tym na jakiś kursach internetowych. Generalnie sam bym to zrobił jako kilka if-elseif oraz końcowy warunek else jeśli nie napotkano po drodze żadnego błędu.