Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Подтверждение по email


Автор: Cript777 13.2.2013, 04:00
Приветствую! Данный код отправляет ссылку с подтверждением email адреса, но приходит адрес страницы, с которой отправлен запрос, в моем случае http://www.сайт.ru/create.php

Код

$appcode =  randomcode(16);
$result = mysql_query("update ".DB_PLAYERS." set code = '".$appcode."' where username = '".$usr."' ");
$mailfrom = $_SERVER['HTTP_HOST'];
$mailfrom = str_replace("www.","",$mailfrom);
$mailf = explode('/',$mailfrom);
$mail = 'support@'.$mailf[0];
$from_header = 'From: '.$mail. "\r\n" .
   'Reply-To: '.$mail . "\r\n" .
   'X-Mailer: PHP/' . phpversion();
$subject = 'Подтверждение email адреса';
$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'];
$url = str_replace("lobby.php","approve.php?&approval=".$appcode,$url);
$contents = CREATE_APPROVAL_EMAIL_CONTENT .' ' .$url;
$to =  $email;
   mail($to, $subject, $contents, $from_header);
 $url = 'index.php';
 echo '<script LANGUAGE="JavaScript">';
echo 'alert(\''.CREATE_APPROVAL_EMAIL_ALERT.'\'); ';
echo 'parent.document.location.href = "'.$url.'";'; 
echo '</SCRIPT>';
die(); 


что здесь не так?

Автор: Arantir 13.2.2013, 09:37
Цитата
$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'];
$url = str_replace("lobby.php","approve.php?&approval=".$appcode,$url);
Боже мой... что это? В чем тут логика?
И это и есть вашей проблемой. Никакого "lobby.php" в $url в помине не будет, если скрипт называться create.php.
Код

$url = "http://".$_SERVER['HTTP_HOST']."/approve.php?&approval=".$appcode;


Цитата
$mailfrom = $_SERVER['HTTP_HOST'];
$mailfrom = str_replace("www.","",$mailfrom);
$mailf = explode('/',$mailfrom);
$mail = 'support@'.$mailf[0];
Тот же вопрос... 
Все это заменяется строкой:
Код

$mail = str_replace('www.','support@',$_SERVER['HTTP_HOST']);


P.S.:
Цитата
'X-Mailer: PHP/' . phpversion();
Первый раз вижу, чтобы кто-то намеренно палил версию php  smile 

Автор: Cript777 13.2.2013, 18:06
Arantir,  супер! Теперь все правильно отправляет.  Вот еще вопрос по коду: файл approve.php

Код

$host=DB_SERVER;
$ln=DB_SERVER_USERNAME;
$pw=DB_SERVER_PASSWORD;
$db=DB_DATABASE;
        mysql_connect("$host","$ln","$pw") or die("Unable to connect to database");
        mysql_select_db("$db") or die("Unable to select database");

$code = addslashes($_GET['approval']);
if($code == '') die();
$result = mysql_query("update ".DB_PLAYERS." set approve = '0' where code = '".$code."' ");
 $url = 'login.php';
 echo '<script LANGUAGE="JavaScript">';
echo 'parent.document.location.href = "'.$url.'"'; 
echo '</SCRIPT>';
die();


Пользователь попадает сюда, после перехода по ссылке, отправленной на email, и аккаунт автоматически активируется, но  почему-то не срабатывает..

Автор: Aliance 13.2.2013, 18:15
По логике все же нужно делать set approve = '1'

Автор: Cript777 13.2.2013, 18:20
Цитата(Aliance @ 13.2.2013,  18:15)
По логике все же нужно делать set approve = '1'

Да, но все же через админ панель такой же запрос и все срабатывает правильно..
Код

$result =mysql_query("update ".DB_PLAYERS." set approve = '0' where username = '".$usr."' ")

Автор: Aliance 14.2.2013, 10:21
Посмотри запрос и попробуй скопировав его выполнить в phpMyAdmin.
Код

$sql ="update ".DB_PLAYERS." set approve = '0' where username = '".$usr."' ";
var_dump($sql);exit;
$result =mysql_query($sql);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)