Здраствуйте, Уважаемые скриптеры! Я - новичёк в php,MYsql ... Задалась задачей поставить себе на сайтик форму регистрации пользователей. Скачала готовый модуль, переделала под себя и всё бы прекрасно, но... После активации E-Mail , юзеров выкидывает на страницу регистрации, а мне бы хотелось, чтобы выкидывало на отдельную страницу.Попыталась переделать, но получала только ошибку сессии. Вот код, который стоит в данный момент: PHP: <?php session_start();@include("config.inc.php");@include("functions.inc.php");$link = mysql_connect($DBSERVER, $DBUSER, $DBPASS)or die("Can not connect" );mysql_select_db($DB, $link) or die ('Can not connect to BD');if(!$_POST['do'] OR $_POST['do'] =='') {if($_SESSION['uid'] =='') { $_SESSION['uid'] = mt_rand(100000,999999); }//??????? ?????echo '<html><head><title>Registratie</title></head><body>';echo '<h2>Registratie formulier</h2>';echo'<form action="" method="POST"><table cellpadding=4 cellspacing=0 border=1 style="border-collapse:collapse">';echo '<tr><td>Naam:</td><td><input name="nick" type="text" value=""></td></tr>';echo '<tr><td>Wachtword:</td><td><input name="pass" type="password" value=""></td></tr>';echo '<tr><td>Wachtword nog een keer:</td><td><input name="rpass" type="password" value=""></td></tr>';echo '<tr><td>E-mail</td><td><input name="mail" type="text" value=""></td></tr>';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 '<tr><td colspan=2 align="right"><input name="do" type="submit" value="Registratie"></td></tr>';echo '</table></form><a href="./">Terug</a></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=windows-1251' . "\r\n";$headers .= 'From: Registratie confirm' . "\r\n";$mailto = $email;$subject = "Registratie conform";$message = 'Om account te aktiveren klick hier <a href="http://almere1223.s3.webhost1.ru/registratie/registration.php?activation='.$uniq_id.'" target="_blank">http://almere1223.s3.webhost1.ru/registratie/registration.php? activation='.$uniq_id.'</a>';if(sendmail($mailto,$subject,$message,$headers) !== FALSE) {echo 'Registratie is klaar...U heeft nieuwe E-mail.Chek Uw E-mail.';}else {echo 'Registratie is onmogelijk...Probier later';} } else {echo 'Registratie is onmogelijk...Probier later';} } else {echo 'Registratie is onmogelijk: E-mail moet op deze lijken <b>name@domen.com</b><br/><ahref="registration.php"/>Terug</a>';} } else {echo 'Registratie is onmogelijk: Wachworden moet hetzelfde zijn<br/><a href="registration.php"/>Terug</a>';} } else { echo 'Registratie is onmogelijk: Deze naam bestaat al<br/><a href="registration.php"/>Terug</a>';} session_destroy(); } else { echo 'Registratie is onmogelijk: Cijfers van t platje waren niet goed ingevuld<br/><a href="registration.php"/>Terug</a>';} } 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>Uw account is geactiveerd</h2><br/> Nu kunt U <a href="index.php">inlogen</a> met Uw iegen inlognaam en wachtword';} else {echo 'Activatie is onmogelijke: account is al geactiveerd';} }?> работу скрипта можно просмотреть тут :http://almere1223.s3.webhost1.ru/registratie/ Полный архив тут: http://almere1223.s3.webhost1.ru/registration.rar Спасибо P.S. язык Голландский
интересно, как это чудо ещё работает... не так давно сталкивался с подобным говнокодом. работать заставил, но, блин, так и не понял что к чему
По коду видно: 1)В самом E-Mail для активации приводится ссылка на скрипт регистрации registration.php 2) При успешной активации выводится ссылка на index.php Следовательно код, ответственный за активацию нужно перенести в начало скрипта и остановить его выполнение при получении переменной $_GET['activation']: PHP: <?php session_start(); @include("config.inc.php"); @include("functions.inc.php"); $link = mysql_connect($DBSERVER, $DBUSER, $DBPASS)or die("Can not connect" ); mysql_select_db($DB, $link) or die ('Can not connect to BD'); 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>Uw account is geactiveerd</h2><br/> Nu kunt U <a href="index.php">inlogen</a> met Uw iegen inlognaam en wachtword'; } else { echo 'Activatie is onmogelijke: account is al geactiveerd'; } die();// остановить дальнейшее выполнение скрипта } if(!$_POST['do'] OR $_POST['do'] =='') { if($_SESSION['uid'] =='') { $_SESSION['uid'] = mt_rand(100000,999999); } // далее весь остальной код } 3) если можно не информировать пользователя об успешной активации, то нужно убрать вывод сообщения об активации и только перейти на нужную страницу index.php PHP: <?php session_start(); @include("config.inc.php"); @include("functions.inc.php"); $link = mysql_connect($DBSERVER, $DBUSER, $DBPASS)or die("Can not connect" ); mysql_select_db($DB, $link) or die ('Can not connect to BD'); 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) { header('Location: index.php?activation=1'); } else { echo 'Activatie is onmogelijke: account is al geactiveerd'; } die();// остановить дальнейшее выполнение скрипта } 4) чтобы выкидывало на отдельную страницу нужно просто изменить ссылку активации на адрес этой страницы- вместо registration.php вставить название скрипта активации - ну, например, если название скрипта activation.php: PHP: $message = 'Om account te aktiveren klick hier <a href="http://almere1223.s3.webhost1.ru/registratie/activation.php?activation='.$uniq_id.'" target="_blank">http://almere1223.s3.webhost1.ru/registratie/activation.php? activation='.$uniq_id.'</a>';