[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос по кукам
PsiMagistr
Ребята, у меня такой вопрос. Есть два файла на PHP. Анализатор и активатор. Их смысл генерировать письмо активации сохраняя данные в куках пользователя. Потом когда пользователь нажмет активациоонную ссылку в своем письме, данные из куков перенесутся в базу, а куки удалятся...

Анализатор принимает данные массива пост, ставит куки и высылает активационное письмо...


<?php

if (isset($_POST['login'])) /* Если массив есть */
{
include("connection.php");

if ($_POST['login'] == '' OR $_POST['pass'] == '' OR $_POST['repass'] == '' OR $_POST['FirstName'] == '' OR $_POST['SirName'] == '' OR $_POST['LastName'] == '') /* Проверка на пустоту */

{
header('Refresh: 1; URL=registration.php');
$Descript = '<H3 align="center">Вы не заполнили все поля!</H3>
<p align="center">Через 1 сек. вы будете перенаправлены на страницу регистрации</p>'
;
/* exit; */
}

else if($_POST['pass'] != $_POST['repass']) /* Проверка на неравенство паролей */
{
header('Refresh: 1; URL=registration.php');
$Descript = '<H3 align="center">Пароли не совпадают.</H3>
<p align="center">Через 1 сек. вы будете перенаправлены на страницу регистрации</p>'
;
/* exit; */
}

else
{
$result = mysql_query("SELECT FirstName FROM avtors WHERE AvtorMail='".$_POST['login']."'");

if (mysql_num_rows($result)>0) /* Проверка на наличие зписи */
{
header('Refresh: 3; URL=registration.php');
$Descript = '<H3 align="center">РЕГИСТРАЦИЯ НЕВОЗМОЖНА! Пользователь с таким адресом почты уже есть!</H3>
<p align="center">Через 3 сек. вы будете перенаправлены на регистрационную страницу нашего сайта.</p>'
;
mysql_free_result($result);
/* exit; */
}
else
{
/* Кука */
setcookie("login",$_POST['login'],time()+60*60);
setcookie("FirstName",$_POST['FirstName'],time()+60*60);
setcookie("SirName",$_POST['SirName'],time()+60*60);
setcookie("LastName",$_POST['LastName'],time()+60*60);
setcookie("pass",$_POST['pass'],time()+60*60);
include("E-mailfunc.php");

send_mime_mail('Автор письма',
'sender@site.ru',
'Получатель письма',
$_POST['login'],
'utf-8', // кодировка, в которой находятся передаваемые строки
'utf-8', // кодировка, в которой будет отправлено письмо
'Письмо-уведомление',
"<html>
<head>
<title>Активация</title>
</head>
<body>
<p>Здравствуйте, уважаемый пользователь "
.$_POST['FirstName']." ".$_POST['LastName'].".</p>
Вы получили тестовое письмо.<br>
Ссылка ниже поведет Вас на активационную страницу.<br>
<p><a href='http://rifma.16mb.com/activation.php'>Активация</a></p>
Если Вы не регистрировались на нашем аккаунте, просто проигнорируйте данное письмо.<br>
</body>
</html>
"
);
mysql_free_result($result);
header('Refresh: 1; URL=index.php');
$Descript = '<H3 align="center">Благодарим Вас за регистрацию!</H3>
<p align="center">Мы отправили Вам письмо с ссылкой на активацию.</p>'
;
}
}



}

else
{
header("Location:index.php");
}
?>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"
>
<html>
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>
Untitled Document</title>
</head>
<body>
<?php

echo("$Descript");
?>
</body>
</html>



Активатор снимает с них информацию и пишет в бд, потом удалаяет куки. Вот его код.


<?php
if (isset($_COOKIE['login']))
{
include("connection.php");
mysql_query("INSERT INTO avtors (FirstName, SirName,LastName,AvtorMail,Password) VALUES ('".$_COOKIE['FirstName']."','".$_COOKIE['SirName']."','".$_COOKIE['LastName']."','".$_COOKIE['login']."','".$_COOKIE['pass']."')");
setcookie("login","",time()-600*100);
setcookie("FirstName","",time()-600*100);
setcookie("SirName","",time()-600*100);
setcookie("LastName","",time()-600*100);
setcookie("pass","",time()-600*100);
header('Refresh: 10; URL=index.php');
echo('<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
<body>
<H3 align="center">Ваш аккаунт активирован! </H3>
<p align="center">Через 10 сек. вы будете перенаправлены на главную страницу нашего сайта, где сможете выполнить вход.</p>
</body>
</html>'
);
}
else
{
header('Refresh: 0; URL=index.php');
}
?>



Самое интересное состоит в том, что на моей машине все работает как часы. На других активатор ведет себя так словно никто не ставил куки. То есть редирект... КАким образом можно объяснить разное поедение PHP у разных людей. Спрашивал разрешены ли куки, говорят - да.



Спустя 28 минут, 5 секунд (20.02.2012 - 14:09) walerus написал(а):
Часы у тебя немного сломаны значит :)
if ($_POST['login'] == '' OR $_POST['pass'] == '' OR $_POST['repass'] == '' OR $_POST['FirstName'] == '' OR $_POST['SirName'] == '' OR $_POST['LastName'] == '') /* Проверка на пустоту */


Введи пробел и твое условие не сработает...
if ( trim( $_POST['login'] ) == '' OR 
trim( $_POST['pass'] ) == '' OR
trim( $_POST['repass'] ) == '' OR
trim( $_POST['FirstName'] ) == '' OR
trim( $_POST['SirName'] ) == '' ) OR
trim( $_POST['LastName'] ) == '' )
)
/* Проверка на пустоту */

так правильнее...

header('Refresh: 1; URL=registration.php');
Человек не успеет прочитать даже...

По теме -
Цитата
Спрашивал разрешены ли куки, говорят - да.
"Все врут" (с) MD. House.

Попробуй у себя вычистить кеш, куки и перепроверь.

P.S. Если есть ссылка, давай мы порегаемся и посмотрим )

Спустя 9 минут, 14 секунд (20.02.2012 - 14:18) johniek_comp написал(а):
а зачем так?
echo("$Descript");

что мешает сделать по-нормльному
echo $Descript;


слизал где-то код, а нам помогать и исправлять? да ну тебя :)

скорее всего у них куки отключены, ну или они(юзеры) криворукие что в 80% случаев :lol:

Спустя 4 минуты, 36 секунд (20.02.2012 - 14:23) PsiMagistr написал(а):
Спасибо.
http://rifma.16mb.com/registration.php Вот ссылка.

Код не слизывал.

У меня работает 100 раз проверял.

Спустя 4 минуты, 43 секунды (20.02.2012 - 14:28) killer8080 написал(а):
PsiMagistr
так делать активацию нельзя. Что мне мешает сделать бота, который автоматически будет слать запросы с нужными куками, сразу на activation.php?
Нужно после всех проверок, сразу создавать аккаунт, помечая его флагом "не активирован". Генерировать уникальный айдишник, записывая его туда же в базу, а на почту отсылать ссылку, содержащую это id. Иначе активация через почту просто теряет всякий смысл.

Спустя 11 минут, 26 секунд (20.02.2012 - 14:39) PsiMagistr написал(а):
killer8080,

Я знаю, мне интересно почему куки у других не записываются.

Спустя 2 часа, 6 минут, 12 секунд (20.02.2012 - 16:45) PsiMagistr написал(а):
Ребята,

Если у вас соображения будут, черкните пожалуйста... Я уже извелся весь. Надо искать, но где? меня спокойно активирует, причем не с локалки, а натурально с хоста...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.