Jump to content
Hostul a fost schimbat. Daca vedeti serverul offline readaugati rpg.b-zone.ro sau 141.95.124.78:7777 in clientul de sa-mp ×

[PAWN] - Validarea adreselor de email / Email addresses validation


Adi007
 Share

Recommended Posts

Validarea adreselor de email

 

Mai jos am sa va prezint informatii ce va vor ajuta la crearea unui sistem simplu si eficient de validare a adreselor de email ale jucatorilor.

In principiu, sistemul functioneaza astfel: Atunci cand un jucator inregistreaza pe server un cont nou, serverul va trimite o cerere catre o pagina web PHP cu anumite date. Pagina web PHP se va ocupa de prelucrarea datelor specificate de server si le va folosi pentru a trimite un link unic catre adresa de email specificata de jucator la inregistrare. Odata primit emailul, adresa devine confirmata cu un click pe linkul din email. Pagina web cuprinsa in email are o forma similara cu "nume-pagina.php?confirm=90JKBSdikasdb785847hjvJFUfatFuf9", deci va fi nevoie si de o a 2-a pagina PHP, cea folosita pentru confirmare.

 

 

Consideram stringul "email" ce cuprinde adresa de email a jucatorului. Aici ramane la alegerea voastra cum si cand solicitati/stocati adresa de email a unui jucator in momentul inregistrarii contului, eu am sa va explic strict partea de trimitere a emailului si de confirmare a acestuia.

 

Aveti nevoie de urmatoarele linii de cod, plasate la partea de inregistrare a conturilor:

new urlstring[150];
format(urlstring,sizeof(urlstring),"www.movie.b-zone.ro/email-player.php?email=%s&account_name=%s",email,string_nume_jucator);
HTTP(playerid, HTTP_GET, urlstring, "", "HTTPAccesSendingValidationEmail");

Mai departe vom scrie functia "HTTPAccesSendingValidationEmail":

forward HTTPAccesSendingValidationEmail(index, response_code, data[]);
public HTTPAccesSendingValidationEmail(index, response_code, data[])
{
     if(response_code == 200) SendClientMessage(index,COLOR_WHITE,"{B8DBFF}Registration: Please visit your email adress and confirm it. Plase notice that our email may be in the SPAM folder.");//email trimis cu succes
     else SendClientMessage(index,COLOR_WHITE,"{B8DBFF}Registration: There was a problem sending your account register confirmation via email.");//pagina web email-player.php nu a raspuns.
}

Acum trebuie sa scrieti codul PHP al pagininilor web (pentru trimiterea emailului si pentru confirmarea acestuia)

Aceasta este pagina "email-player.php" folosita anterior in pawno:

<?php
	if(isset($_GET['email']) && !empty ($_GET['email']) && isset($_GET['account_name']) && !empty ($_GET['account_name']))
	{	
			$to = $_GET['email'];//$to va detine adresa de email a jucatorului.
			$accname = $_GET['account_name'];
			$random_url_confirmation = md5(openssl_random_pseudo_bytes(32));//Vom genera un cod unic de 32 de caractere.
			$subject = "Account confirmation";
			$header  = 'MIME-Version: 1.0' . "\r\n";
			$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
			$header .= 'From: Movie Administration <movie@b-zone.ro>' . "\r\n";
			$message = "
			<html>
				<head>
					<title>Account confirmation: movie.b-zone.ro:7777 - San Andreas Multiplayer</title>
				</head>
				<body>
						<p><a href='http://movie.b-zone.ro/register-confirm.php?rand=$random_url_confirmation'>http://movie.b-zone.ro/register-confirm.php?rand=$random_url_confirmation</a></p>
				</body>
			</html>
			";
			mail($to,$subject,$message,$header) or die();//Send the email
			
	}
?>

Atentie: Codul de mai sus este orientativ. Tot acolo trebuie sa introduceti singuri o meotda de verificare daca adresa de email a jucatorului specificat nu a fost deja confirmata si in cazul in care a fost confirmata sa fie impiedicata trimiterea unui nou email.

De asemenea, trebuie sa introduceti linii de cod care sa scrie unicul cod generat de functia "md5", prin anumite mijloace (fisiere text, baza de date MySQL). Este important sa faceti acesti doi pasi, deoarece va trebui sa se faca o asociere intre numele contului si codul unic generat de "md5", in momentul in care se va face confirmarea (din cea de-a 2-a pagina PHP).

 

 

Vom trece la cealalta pagina PHP, cea ce se ocupa cu verificarea linkului din email (confirmarea propriu zisa):

<?php
	if(isset($_GET['rand']) && !empty($_GET['rand']))
	{
		$randomstring = $_GET['rand'];//aici se afla codul unic specificat in URL prin "?rand="
		
		//Aici trebuie sa efectuati o cautare intr-o baza de date de exemplu, in functie de codul specificat la "?rand="
		//Daca respectivul cod s-a gasit ca fiind asociat cu un anumit cont, se vor descarca din baza de date/fisier, numele contului si emailul.

		$accountname = //aici este numele contului asociat cu unicul cod specificat de "?rand=".
		$playersmail = //aici este adresa de email.
		echo"<p>Good job $accountname! You have successfully confirmed your email adress.</p>";
		echo"<p>Email adress: $playersmail</p>";
	}
?>

Ca si in cazul primei pagini PHP si aceasta este orientativa. Va trebui sa efectuati o cautare in toate conturile serverului vostru pentru a depista daca vreun cont detine codul specificat prin ?rand. Daca un cont il detine, se va stoca numele si adresa de email si se vor folosi cum vedeti in pagina de mai sus. Tot in pagina de mai sus trebuie sa folositi linii de cod in functie de metoda de salvare folosita (fisiere text / baza de date MySQL) pentru a modifica statusul emailului din invalid, in valid (confirmat).

 

 


 

 

 

Tot ceea ce am explicat mai sus este menit pentru a va crea o idee despre cum se face acest lucru. Trebuie sa aveti cunostiinte cel putin minime pentru a reusi sa adaptati codurile de mai sus pentru propriile websiteuri/servere de SA:MP. Sper sa fi reusit sa va ajut cu ceva, succes tuturor.

Edited by Cdorsu
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.