Вот спасибо огромное... Может вы мне поможете с самим
скриптом?:)
Вот сам
скрипт. Просьба: Вытащите из него вот эту активацию аккаунта по email.
Просто после регистрации
скрипт отправляет на email код подтверждения.
Я пытался вытащить, но всё равно не получилось.
Дело в том, что мне не нравится подтверждение по email. У меня
php сайт для моб. телефонов, кто будет заходить на email и подтверждать аккаунт правильно? Тем более email может быть только такого вида name@domen.com.
<html>
<head>
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Регистрация</title>
<link rel="stylesheet"
href="http://сайт/style.css" type="text/css" />
</head>
<?php
session_start();
@include("файл подкл. к БД");
@include("файл фильтрации домена");
$link = mysql_connect($DBSERVER, $DBUSER, $DBPASS)
or die("Не могу подключится к базе данных!" );
mysql_select_db($DB, $link) or die ('Не могу выбрать базу данных!');
if(!$_POST['do'] OR $_POST['do'] =='')
{
if($_SESSION['uid'] =='')
{ $_SESSION['uid'] = mt_rand(100000,999999);
}
echo '
<html>
<head>
<div class="main">
<div align="padding-left">
<div style="text-align: padding-left;padding-top:1px;padding-bottom:3px;background-color:#008000;color:white;">
<span style="color:white">Регистрация</span></a>
</div>
<title>Регистрация</title></div>
</head>
<body>';
echo '
<form action="" method="post" enctype="multipart/form-data">';
echo '
Логин:<br />
<input name="nick" type="text" size="20" value=""><br />';
echo '
Пароль:<br />
<input name="pass" type="password" size="20" value=""><br />';
echo '
Повторите пароль:<br />
<input name="rpass" type="password" size="20" value=""><br />';
echo '
E-mail адрес:<br />
<input name="mail" type="text" size="20" value="">
<br /><br />';
echo '
<tr align="center">
<td colspan=2>
<img src="img/capcha.php?sid='.$_SESSION['uid'].'"/><br/>
<input name="sid" type="text" value=""></td></tr>';
echo '<br><tr>
<td colspan=2 align="right">
<input name="do" type="submit" value="Регистрация"><br>';
echo '<span style="font-size:small; color:green;">
<a href="http://сайт/">Главная</a> ·
<a href="http://сайт/registration/index.php">Авторизоваться</a></span> ;</div>
<span style="font-size:x-small; color:green;">© 2010 Desing by ***</span></div>
</form>
</body>
</html>';
}
if($_POST['do'] !='')
{
if($_POST['sid'] == $_SESSION['uid'])
{
$nick = $_POST['nick'];
mysql_query("SELECT * FROM users WHERE nick='".strtolower($nick)."'");
if(mysql_affected_rows()==0)
{
if($_POST['pass'] !='' AND $_POST['rpass'] !='' AND $_POST['pass'] === $_POST['rpass'])
{
if(checkmail($_POST['mail']) !== -1)
{
$uniq_id = md5($_SERVER['REMOTE_ADDR'].
$_SERVER['HTTP_USER_AGENT'].mktime());
$pass = $_POST['pass'];
$email = $_POST['mail'];
$r = @mysql_query("INSERT INTO users VALUES(NULL,'".strtolower($nick)."','".md5($pass)."','".$email."','".$uniq_id."',0,'".date("dmY")."','".date("dmY")."')");
if($r) {
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= 'From:Сайт %sitename%' . "\r\n";
$mailto = $email;
$subject = "Подтверждение регистрации на сайте";
$message = 'Для активации аккаунта пройдите по следующей ссылке
<a href="http://сайт/registration/registration.php?activation='.$uniq_id.'" target="_blank">http://сайт/registration/registration.php?activation='.$uniq_id.'</a>';
$message .= 'или скопируйте ссылку в окно ввода адреса браузера и нажмите Enter.';
if(sendmail($mailto,$subject,$message,$headers) !== FALSE)
{echo '
<div class="main">
<div align="padding-left">
<div style="text-align: padding-left;padding-top:1px;padding-bottom:3px;background-color:#008000;color:white;">
<span style="color:white">Регистрация</span></a></div>
<form action="" method="post" enctype="multipart/form-data">Регистрация завершена!<br>На введённый Вами E-mail было отправлено сообщение для активации аккаунта.
<br>
<a href="registration.php"/>Назад</a></div></form>';
}
else
{echo '
<div class="main">
<div align="padding-left">
<div style="text-align: padding-left;padding-top:1px;padding-bottom:3px;background-color:#008000;color:white;">
<span style="color:white">Ошибка</span></a></div>
<form action="" method="post" enctype="multipart/form-data">Регистрация невозможна! <br>Повторите запрос позднее!<br/>
<a href="registration.php"/>Назад</a></div></form>';
}
}
else
{echo '
<div class="main">
<div align="padding-left">
<div style="text-align: padding-left;padding-top:1px;padding-bottom:3px;background-color:#008000;color:white;">
<span style="color:white">Ошибка</span></a></div>
<form action="" method="post" enctype="multipart/form-data">Регистрация невозможна! <br>Повторите запрос позднее!<br/>
<a href="registration.php"/>Назад</a></div></form>';
}
}
else
{echo '
<div class="main">
<div align="padding-left">
<div style="text-align: padding-left;padding-top:1px;padding-bottom:3px;background-color:#008000;color:white;">
<span style="color:white">Ошибка</span></a></div>
<form action="" method="post" enctype="multipart/form-data">
Регистрация невозможна!
<br>Электронный адрес должен соответствовать шаблону <b>name@domen.com</b>
<a href="registration.php"/>Назад</a></div></form>';
}
}else {echo '
<div class="main">
<div align="padding-left">
<div style="text-align: padding-left;padding-top:1px;padding-bottom:3px;background-color:#008000;color:white;">
<span style="color:white">Ошибка</span></a></div>
<form action="" method="post" enctype="multipart/form-data">Регистрация невозможна! <br>Введенные пароли не совпадают!
<br/><a href="registration.php"/>Назад</a></div></form>';}
}else { echo '
<div class="main">
<div align="padding-left">
<div style="text-align: padding-left;padding-top:1px;padding-bottom:3px;background-color:#008000;color:white;">
<span style="color:white">Ошибка</span></a></div>
<form action="" method="post" enctype="multipart/form-data">Регистрация невозможна! <br>Пользователь с таким именем уже существует!<br/>
<a href="registration.php"/>Назад</a></div></form>';}
session_destroy();
}else { echo '
<div class="main">
<div align="padding-left">
<div style="text-align: padding-left;padding-top:1px;padding-bottom:3px;background-color:#008000;color:white;">
<span style="color:white">Ошибка</span></a></div>
<form action="" method="post" enctype="multipart/form-data">Регистрация невозможна!
<br>Код подтверждения введен не верно!
<br/><a href="registration.php"/>Назад</a></div></form>';}
}
if($_GET['activation'] AND $_GET['activation']!='') {
$uniq_id = $_GET['activation'];
$r=@mysql_query("UPDATE users SET status=1 WHERE uniq_id='".$uniq_id."' AND status=0");
if($r) {echo '<h2>Ваша учетная запись активирована.</h2><br/> Авторизуйтесь на сайте! <a href="index.php">Авторизоваться</a>';}
else {echo 'Активация уже подтверждена.';}
}
?>
Далее вот файл фильтровки email.
Как в нём изменить фильтрацию, чтоб все email поддерживались а не только name@domain.com.
<?
function checkmail($mail) {
$mail=trim($mail);
if (strlen($mail)==0) return -1;
if (!preg_match("/^[a-z0-9_-]{1,20}+(\.){0,2}+([a-z
0-9_-]){0,5}@(([a-z0-9-]+\.)+(com|net|org|mil|".
"edu|gov|arpa|info|biz|inc|name|
[a-z]{2})|[0-9]{1,3}\.[0-9]{1,3}\.[0-".
"9]{1,3}\.[0-9]{1,3})$/is",$mail))
return -1;
return $mail;
}
function sendmail($mail,$subject,$message,$headers)
{
if(mail($mail,$subject,$message,$headers))
{ return TRUE;}
else {return FALSE;}
}
?>
Вот и всё что нужно. Должно получится что уберётся подтверждение по email и фильтрация email должна быть, но разные домены.
Думаю
скрипт index.
php вам показывать не стоит.
Вот
скрипт подключения к БД.
Как видно то он include к выше описанным
скриптам.
<?
$DBSERVER = "localhost";
$DBUSER = "user";
$DBPASS = "pass";
$DB = "dbname";
?>
Вообщем вот.
Скрипт работает, всё в порядке.