• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak wysłać maila użytkownikowi

0 głosów
191 wizyt
pytanie zadane 25 maja 2019 w PHP przez manager96 Bywalec (2,010 p.)

Hej, chciałbym się dowiedzieć  czy żeby skonfigurować poczte na serwisie (np użytkownik zapomni hasła, kliknie w przycisk 'odzyskaj' i dostanie na maila nowe hasło), należy skonfigurować jakieś SMTP czy coś? Czy wystarczy zwykły skrypt w PHP?

Strona znajduje się na cba.pl, tam też założyłem konto email odzyskaj@liga.cba.pl.

I teraz czy sam kod PHP wystarczy czy nalezy zrobić coś jeszcze? Bo to co aktualnie posiadam nie działa mi jeszcze:


Wstecz (accesskey b)    Zapisz (accesskey s)    	plik: /liga.cba.pl/odzyskaj.php
Character encoding:    	Status: Zapisany 2019-05-25 22:12:15 w trybie FTP_ASCII
<?php

	require_once "connect.php";

	$polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);
	
	
			if(isset($_GET['resetpassword'])){
				$key = $_GET['resetpassword'];
				$zapytanie = "SELECT acces_token FROM uzytkownicy WHERE acces_token = $acces_token";
			}
			
			if(isset($_POST['email'])){
				if(empty($_POST['email'])){
					$_SESSION['blad'] = '<span style="color:red">Nie podano maila!</span>';
					//header("location: odzyskaj.php");
					//exit;
				}	
				else {

				$email = $_POST['email'];
			
				$haslo=mt_rand();
					$acces_token= password_hash($haslo, PASSWORD_DEFAULT);
				
	$zapytanie = "UPDATE uzytkownicy SET pass = '$acces_token' WHERE email LIKE '$email'";
	$wynik = mysqli_query($polaczenie, $zapytanie);
			
				
				$_SESSION['blad']= '<span style="color:red">Wysłano maila resetującego hasło na Twojego maila.
				<br>
				Twoje hasło to: '.$haslo.' </span>';
				
				
				$email_template = "email_resetpassword_template.html";
		$wiadomosc = file_get_contents($email_template);
		$wiadomosc = str_replace("[login]", $user, $wiadomosc);
		$wiadomosc = str_replace("[key]", $acces_token, $wiadomosc);
		$wiadomosc = str_replace("[url]","http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] ,$wiadomosc);
		

	
	$naglowki = 'From: odzyskaj@liga.cba.pl' . "\r\n" .
					'Replay-To: odzyskaj@liga.cba.pl' . "\r\n" .
					'Content-type: text/html; charset=utf-8' . "\r\n";
					
			mail($user, "Aktywacja konta " . $user, $wiadomosc, $naglowki);
				
				
				
				//header("Location: odzyskaj.php");
				//exit;
				}
			}
			else {
				$_SESSION['blad'] = '<span style="color:red">Wpisz swój E-mail</span>';
			}
		
		$polaczenie->close();
	
?>

					<?php
	if(isset($_SESSION['blad']))	echo $_SESSION['blad'];
?>	

		<div id="loginind">
			<form action="odzyskaj.php" method="post">
	
				email  <input type="text" name="email" /> 
				<br></br>
				
			<input type="submit" value="Odzyskaj hasło"/>
				
				<div style="clear:both;"></div>
	
			</form>
		</div>
		
		
		
		

 

2 odpowiedzi

0 głosów
odpowiedź 25 maja 2019 przez dawid6512 Gaduła (4,570 p.)
komentarz 25 maja 2019 przez dawid6512 Gaduła (4,570 p.)
ps. czemu akurat odzyskaj@...?

w takich emailach zazwyczaj używa się noreply@...

taka niepisana zasada mozna powiedziec :D

oraz zamiast mysqli polecam pdo
komentarz 25 maja 2019 przez manager96 Bywalec (2,010 p.)
require 'vendor/autoload.php';

Co to właściwie jest

komentarz 25 maja 2019 przez dawid6512 Gaduła (4,570 p.)
jesli uzywasz phpmailera to wystacza ci tylko te 2 pliki:

class.phpmailer.php

class.smtp.php

A i przy polskich znakach w tytule wywala chyba Warninga ale wysyła.
0 głosów
odpowiedź 25 maja 2019 przez Arkadiusz Waluk Ekspert (278,660 p.)
Co dokładnie znaczy, że "nie działa"?

Zależy od konfiguracji serwera. SMTP dla mail() konfiguruje się w php.ini, więc na zwykłym hostingu tego sam nie ruszysz. Pytanie czy jest skonfigurowane, na większości hostingów tak, ale na darmowym cba to nie wiem.

Generalnie lepiej wysyłać przez biblioteki jak SwiftMailer/PHPMailer, tam normalnie podajesz dane do SMTP i jest ogólnie łatwiej i wygodniej.
komentarz 25 maja 2019 przez dawid6512 Gaduła (4,570 p.)
zalezy co masz na mysli na zwyklym, na np.home.pl nie ma problemu z ustawieniem php.ini
komentarz 25 maja 2019 przez Arkadiusz Waluk Ekspert (278,660 p.)
Miałem na myśli większość współdzielonych, które najczęściej dają dostęp do zmiany wybranych ustawień z php.ini na poziomie panelu administracyjnego i tyle. Jeśli home faktycznie pozwala zmieniać dowolne parametry z php.ini każdemu, to nie wiedziałem. Tak czy siak lepiej użyć jednej z wymienionych wyżej bibliotek i mieć spokój.

Podobne pytania

0 głosów
0 odpowiedzi 76 wizyt
pytanie zadane 5 kwietnia 2020 w C# przez tonn204 Mądrala (6,770 p.)
0 głosów
2 odpowiedzi 763 wizyt
pytanie zadane 9 czerwca 2016 w PHP przez adojado Początkujący (420 p.)
0 głosów
2 odpowiedzi 116 wizyt
pytanie zadane 30 czerwca 2020 w Sieci komputerowe, internet przez Bartek12 Mądrala (5,470 p.)
Porady nie od parady
Pytania na temat serwisu SPOJ należy zadawać z odpowiednią kategorią dotyczącą tej strony.SPOJ

85,714 zapytań

134,508 odpowiedzi

298,541 komentarzy

56,631 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...