Konfigurációs E-mail küldés, és fogadás ( regisztráció ) [ PHP & MySql ]

Indította NevemSenki, 2013 február 01, 12:28:54 DÉLUTÁN

Előző téma - Következő téma

NevemSenki


Aki kicsit ért hozzá, az kis erőfeszítéssel módosíthatja a kódot, és így bármilyen rendszerbe beépíthető!

Találtam a minap egy elég jól összedobott kis rendszert, konfugurációs E-mail küldésre.
Tudjátok, ami küld egy E-mail-t hogy igazolj vissza.
Kicsit kiegészítettem, a konstrukció működőképes.
Belinkelném nagyon szívesen hogy meliyk lodalról származik, de az a helyzet, hogy töröltem minden előzményt és hasonló dolgokat ( géppucolgatás ) és nem tudom visszakeresni.
Ezért:

A lentebb látható kód, kis kiegészítéssel, az éterből származik.... :)

Ezen dolog megvalósításához, 4 kis fájl-ra, és 2 táblára lesz mindössze szükségünk.

signup.php

Kód (html5) Kijelölés
<table width="350" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><form name="form1" method="post" action="signup_ac.php">
<table width="100%" border="0" cellspacing="4" cellpadding="0">
<tr>
<td colspan="3"><strong>Sign up</strong></td>
</tr>
<tr>
<td width="76">Name</td>
<td width="3">:</td>
<td width="305"><input name="name" type="text" id="name" size="30"></td>
</tr>
<tr>
<td>E-mail</td>
<td>:</td>
<td><input name="email" type="text" id="email" size="30"></td>
</tr>
<tr>
<td>password</td>
<td>:</td>
<td><input name="password" type="password" id="password" size="30"></td>
</tr>
<tr>
<td>Country</td>
<td>:</td>
<td><input name="country" type="text" id="country" size="30"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="Submit"> &nbsp;
<input type="reset" name="Reset" value="Reset"></td>
</tr>
</table>
</form></td>
</tr>
</table>


signup_ac.php

Kód (php) Kijelölés
<?php

include('config.php');

// table name 
$tbl_name=temp_members_db;

// Random confirmation code 
$confirm_code=md5(uniqid(rand())); 

// values sent from form 
$name=$_POST['name'];
$email=$_POST['email'];
$country=$_POST['country'];

// Insert data into database 
$sql="INSERT INTO $tbl_name(confirm_code, name, email, password, country)VALUES('$confirm_code', '$name', '$email', '$password', '$country')";
$result=mysql_query($sql);

// if suceesfully inserted data into database, send confirmation link to email 
if($result){
// ---------------- SEND MAIL FORM ----------------

// send e-mail to ...
$to=$email;

// Your subject
$subject="Your confirmation link here";

// From
$header="from: your name <your email>";

// Your message
$message="Your Comfirmation link \r\n";
$message.="Click on this link to activate your account \r\n";
$message.="http://www.yourweb.com/confirmation.php?passkey=$confirm_code";

// send email
$sentmail mail($to,$subject,$message,$header);
}

// if not found 
else {
echo 
"Not found your email in our database";
}

// if your email succesfully sent
if($sentmail){
echo 
"Your Confirmation link Has Been Sent To Your Email Address.";
}
else {
echo 
"Cannot send Confirmation link to your e-mail address";
}
?>



confirmation.php

Kód (php) Kijelölés
<?php

include('config.php');

// Passkey that got from link 
$passkey=$_GET['passkey'];
$tbl_name1="temp_members_db";

// Retrieve data from table where row that match this passkey 
$sql1="SELECT * FROM $tbl_name1 WHERE confirm_code ='$passkey'";
$result1=mysql_query($sql1);

// If successfully queried 
if($result1){

// Count how many row has this passkey
$count=mysql_num_rows($result1);

// if found this passkey in our database, retrieve data from table "temp_members_db"
if($count==1){

$rows=mysql_fetch_array($result1);
$name=$rows['name'];
$email=$rows['email'];
$password=$rows['password']; 
$country=$rows['country'];
$tbl_name2="registered_members";

// Insert data that retrieves from "temp_members_db" into table "registered_members" 
$sql2="INSERT INTO $tbl_name2(name, email, password, country)VALUES('$name', '$email', '$password', '$country')";
$result2=mysql_query($sql2);
}

// if not found passkey, display message "Wrong Confirmation code" 
else {
echo 
"Wrong Confirmation code";
}

// if successfully moved data from table"temp_members_db" to table "registered_members" displays message "Your account has been activated" and don't forget to delete confirmation code from table "temp_members_db"
if($result2){

echo 
"Your account has been activated";

// Delete information of this user from table "temp_members_db" that has this passkey 
$sql3="DELETE FROM $tbl_name1 WHERE confirm_code = '$passkey'";
$result3=mysql_query($sql3);

}

}
?>



config.php
Kód (php) Kijelölés
<?php

$host
="localhost"// Host name 
$username=""// Mysql username 
$password=""// Mysql password 
$db_name=""// Database name 


//Connect to server and select database.
mysql_connect("$host""$username""$password")or die("cannot connect to server"); 
mysql_select_db("$db_name")or die("cannot select DB");

?>


És a végén a 2 tábla.

temp_members_db
Kód (mysql) Kijelölés
CREATE TABLE `temp_members_db` (
`confirm_code` varchar(65) NOT NULL default '',
`name` varchar(65) NOT NULL default '',
`email` varchar(65) NOT NULL default '',
`password` varchar(15) NOT NULL default '',
`country` varchar(65) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


registered_members
Kód (mysql) Kijelölés
CREATE TABLE `registered_members` (
`id` int(4) NOT NULL auto_increment,
`name` varchar(65) NOT NULL default '',
`email` varchar(65) NOT NULL default '',
`password` varchar(65) NOT NULL default '',
`country` varchar(65) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


Üdv.: Senki
Csak a Puffin ad neked erőt, és mindent lebíró akaratot!

NevemSenki

Kicsit módosítva a kódot, és felhasználva a Gmail által nyújtott lehetőségeket, megalkottam a működő kódot!
Hazudtam, mert ez a kód működő, csak éppen kell hozzá SMTP .... olvass utána.
Ha ehhez nem kell más, minr egy Gmail-es fiók, és máris megy a config E-mail.

Ezen részt:

Kód (php) Kijelölés
// send e-mail to ...
$to=$email;

// Your subject
$subject="Your confirmation link here";

// From
$header="from: your name <your email>";

// Your message
$message="Your Comfirmation link \r\n";
$message.="Click on this link to activate your account \r\n";
$message.="http://www.yourweb.com/confirmation.php?passkey=$confirm_code";

// send email
$sentmail = mail($to,$subject,$message,$header);
}

// if not found
else {
echo "Not found your email in our database";
}

// if your email succesfully sent
if($sentmail){
echo "Your Confirmation link Has Been Sent To Your Email Address.";
}
else {
echo "Cannot send Confirmation link to your e-mail address";
}


Cseréljétek le erre:

Kód (php) Kijelölés
require_once("beepulok/mail/class.phpmailer.php");

//Instance an object of phpmailer
$mail = new phpmailer();

//Indicate to phpmailer where is the smtp
$mail->PluginDir = "";

//We will use smtp
$mail->Mailer = "smtp";

//Our server smtp. The encryption is ssl
$mail->Host = "ssl://smtp.gmail.com";

//Port of gmail 465
$mail->Port="465";

//Smtp requires authentication
$mail->SMTPAuth = true;

//Our username and password
$mail->Username = $kuldo_n;
$mail->Password = $kuldo_j;

//Our email address and the name which will be displayed
$mail->From = $weboldalnev;
$mail->FromName = $weboldalnev;

//The dafault value of Timeout is 10, we give a little more
$mail->Timeout=30;

//Indicates the receiver email
$mail->AddAddress($_POST['emailAddress']);

//Subject
$mail->Subject = "Config Code";

//Body message. Can contains html
$mail->Body = "<img src='http://hobby-site.blogja.net/wajcraft.png' align='middle'></img><p>Config mail. Katt a linkre <a href='".$oldaleleres."/fiokkeszites.hun?passkey=".$confirm_code."' target='_blank'>".$oldaleleres."/fiokkeszites.hun?passkey=".$confirm_code."</a></p>";

//If dont supports html
$mail->AltBody = "Only text";

//Send the email
$result = $mail->Send();

//$result contains true or false as sent or found faulty.

/* Mail küldése end */
/********************/


És amint látjátok, " require_once ", az pedig ez lenne: http://phpmailer.worxware.com/

Egy kép, hogy képes HTML kód küldésére is, tökéletesen meg is jelenik:

A képet a Képfeltöltés.hu tárolja. http://www.kepfeltoltes.hu

A Wajcraft Web regisztrációs részébe lett ez az egész beépítve, aminek a működéséről itt láthattok egy videót:

http://youtu.be/j3nw9EWdoR4

Használjátok, próbálgassátok... :)

( A jelszavamat csak azért nem takartam ki, hogy lássátok nem csalok. Sosem fogok kitakarni semmit, úgy mutatom meg ahogy az eredetileg van. Sosem vágom a felvételeket, ez látszik is a bénázásokból.
De a jelszóval sokra nem mentek, mert megváltoztattam egy 24 karakteres, elég bonyolult jelszóra. :) )


Üdv.: Senki
Csak a Puffin ad neked erőt, és mindent lebíró akaratot!

Powered by EzPortal