Нету сил бороться!=( закипел!
Пишу регистрацию с подтверждением по email
данные с формы получил
сгенерировал уникальный ключ активации
записал данные с ключем в табличку user_activated
отправил ключик пользователю на email
вывел пользователя на другую страничку с просьбой ввестиполученный ключик
вводим ключик! (ВНИМАНИЕ!!! )
идет проверка на совподение ключика в базе и тот что мы получили
еслисовпал то переписываем данные login password и email в табличку user
после чего удаляем эту строку из таблички user_activated
Так вот когда скрипт должен перетаскивать данные он помещает в табличку user пустые значения
но после выполнения никаких ошибок не выводит и удаляет данные из временной таблицы
Таблица user_activated:
id
login
password
s_key
Таблица user:
id
login
password
access_level
name
famely
tele
icq
sity
photo
date
Ну и собственно часть нерабочего скрипта:
$activ=mysql_fetch_array($resul);
mysql_query("INSERT INTO `user` (login, password, email, access_level) VALUES ('".$activ['login']."', '".$activ['password']."', '".$activ['email']."', 0)");
mysql_query("DELETE FROM `user_activate` WHERE `id`='$activ[id]'");
Также забыл сказать что данный скрипт исполнен в 3 файлах
1 html форма отправляющая данные скрипту который после выполнения
выдает форму с вводом кода и после чего данная форма отправляет данные 3 файлу непосредственно активации пользователя.
Спустя 51 минута, 30 секунд (24.05.2010 - 05:57) zarafar написал(а):
Цитата (Remka @ 24.05.2010 - 02:06) |
Так вот когда скрипт должен перетаскивать данные он помещает в табличку user пустые значения но после выполнения никаких ошибок не выводит и удаляет данные из временной таблицы |
А если распечатать этот запрос и вручную выполнить его в бд ?
$activ=mysql_fetch_array($resul);
echo "INSERT INTO `user` (login, password, email, access_level) VALUES ('".$activ['login']."', '".$activ['password']."', '".$activ['email']."', 0)";
exit;
mysql_query("INSERT INTO `user` (login, password, email, access_level) VALUES ('".$activ['login']."', '".$activ['password']."', '".$activ['email']."', 0)");
mysql_query("DELETE FROM `user_activate` WHERE `id`='$activ[id]'");
Спустя 11 минут, 21 секунда (24.05.2010 - 06:09) Remka написал(а):
Да вот тут другая проблемма обьявилась
вобщем получаю код активации 5 ячеек по 5 символов через дэвис
ввожу он вроде продолжает а если ввожу другой которого в базе вовсе нету то никаких ошибок и все равно продолжает скрипт
Посмотри пожалуйста где я тут ляповнаделал?
спасибо!
вобщем получаю код активации 5 ячеек по 5 символов через дэвис
ввожу он вроде продолжает а если ввожу другой которого в базе вовсе нету то никаких ошибок и все равно продолжает скрипт
Посмотри пожалуйста где я тут ляповнаделал?
спасибо!
<?php
if(isset($_POST['reg'])){
$s_active = "". $_POST["part1"] ."-(". $_POST["part2"] .")-". $_POST["part3"] ."-". $_POST["part4"] ."-". $_POST["part5"] ."";
}
$result = mysql_query("SELECT * FROM `user_activate` WHERE `s_key` = '$s_active'") or die('Не удалось получить данные из базы.');
$row = mysql_fetch_assoc($result);
mysql_query("INSERT INTO `user` (login, password, email, access_level) VALUES ('".$row['login']."', '".$row['password']."', '".$row['email']."', 0)");
mysql_query("DELETE FROM `user_activate` WHERE `id`='$activ[id]'");
echo "Аккаунт активирован <br><a href=index.php>На главную</a>";
?>
Спустя 5 минут, 16 секунд (24.05.2010 - 06:14) Remka написал(а):
По любому вот тут ляП!
Печатаю:
Получаю:
INSERT INTO `user` (login, password, email, access_level) VALUES ('', '', '', 0)
if(isset($_POST['reg'])){
$s_active = "". $_POST["part1"] ."-(". $_POST["part2"] .")-". $_POST["part3"] ."-". $_POST["part4"] ."-". $_POST["part5"] ."";
}
$resul = mysql_query("SELECT * FROM `user_activate` WHERE `s_key` = '$s_active'") or die('Не удалось получить данные из базы.');
Печатаю:
<?php
if(isset($_POST['reg'])){
$s_active = "". $_POST["part1"] ."-(". $_POST["part2"] .")-". $_POST["part3"] ."-". $_POST["part4"] ."-". $_POST["part5"] ."";
}
$resul = mysql_query("SELECT * FROM `user_activate` WHERE `s_key` = '$s_active'") or die('Не удалось получить данные из базы.');
$activ=mysql_fetch_array($resul);
echo "INSERT INTO `user` (login, password, email, access_level) VALUES ('".$activ['login']."', '".$activ['password']."', '".$activ['email']."', 0)";
exit;
mysql_query("INSERT INTO `user` (login, password, email, access_level) VALUES ('".$activ['login']."', '".$activ['password']."', '".$activ['email']."', 0)");
mysql_query("DELETE FROM `user_activate` WHERE `id`='$activ[id]'");
echo "Аккаунт активирован <br><a href=index.php>На главную</a>";
?>
Получаю:
INSERT INTO `user` (login, password, email, access_level) VALUES ('', '', '', 0)
Спустя 3 минуты, 43 секунды (24.05.2010 - 06:18) zarafar написал(а):
Вот ты почти уже и разобрался сам, почему "он помещает в табличку user пустые значения".
Потому что :
Потому что :
Цитата |
$result = mysql_query("SELECT * FROM `user_activate` WHERE `s_key` = '$s_active'") or die('Не удалось получить данные из базы.'); |
меняем на
Цитата |
$result = mysql_query("SELECT * FROM `user_activate` WHERE `s_key` = '$s_active'"); if (mysql_num_rows($result) == 0) die('Не удалось получить данные из базы.'); |
Спустя 3 минуты, 11 секунд (24.05.2010 - 06:21) Remka написал(а):
Пишет что не удалосьполучитьданные из базы
попытался распечатать $s_active
ничего не вышло
может дело в том что форма с вводом ключа в другом файле?
попытался распечатать $s_active
ничего не вышло
может дело в том что форма с вводом ключа в другом файле?
Спустя 4 минуты, 8 секунд (24.05.2010 - 06:25) zarafar написал(а):
Если в $s_active пусто пиши сюда свой другой файл с формой. Посмотрим на него.
Спустя 6 минут, 6 секунд (24.05.2010 - 06:31) Remka написал(а):
Activate.php:
activated.php:
<?php
$check=mysql_query("select * from user where login='".$_POST['login']."'");
$check1=mysql_num_rows($check);
$chars="1234567890";
$max=25;
$size=StrLen($chars)-1;
$skey=null;
while($max--)
$skey.=$chars[rand(0,$size)];
$part1 = substr($skey, 0, 5);
$part2 = substr($skey, 5, 5);
$part3 = substr($skey, 10, 5);
$part4 = substr($skey, 15, 5);
$part5 = substr($skey, 20, 5);
$skey = $part1.'-'.$part2.'-'.$part3.'-'.$part4.'-'.$part5;
if (isset($_POST['submit']))
{
if($check1>0)
{
echo "<p clss='error'><b>Ошибка при регистрации: такой аккаунт уже сущетвует.</b></p>";
}
else
{
mysql_query("INSERT INTO user_activate (login, password, email, s_key) VALUES ('".$_POST['login']."', '".base64_encode(pack('H*', sha1($_POST['password'])))."', '".$_POST['email']."', '".$skey."')");
mysql_close();
print '<p class="error"><b>На ваш почтовый ящик выслано письмо с кодом активации активации.</b></p>';
}
};
ТУТ БУДЕТ ОТПРАВКА ПИСЬМА
?>
<form method="post" action="index.php?acti=user" name="activate" >
<table align="left" width="450px">
<tr>
<td width="125px">Код активации*</td>
<td width="55px"><input type="text" name="part1" maxlength="5" size="5"> -</td>
<td width="55px"><input type="text" name="part2" maxlength="5" size="5"> -</td>
<td width="55px"><input type="text" name="part3" maxlength="5" size="5"> -</td>
<td width="55px"><input type="text" name="part4" maxlength="5" size="5"> -</td>
<td width="55px"><input type="text" name="part5" maxlength="5" size="5"></td>
</tr>
<tr>
<td width="125px"><input type="submit" name="activate" value="Подтвердить" /></td>
</tr>
</table>
</form>
activated.php:
<?php
if(isset($_POST['activate'])){
$s_active = "". $_POST["part1"] ."-(". $_POST["part2"] .")-". $_POST["part3"] ."-". $_POST["part4"] ."-". $_POST["part5"] ."";
}
$result = mysql_query("SELECT * FROM `user_activate` WHERE `s_key` = '$s_active'");
if (mysql_num_rows($result) == 0)
die('Не удалось получить данные из базы.');
$activ=mysql_fetch_array($result);
echo $s_active;
echo "INSERT INTO `user` (login, password, email, access_level) VALUES ('".$activ['login']."', '".$activ['password']."', '".$activ['email']."', 0)";
exit;
mysql_query("INSERT INTO `user` (login, password, email, access_level) VALUES ('".$activ['login']."', '".$activ['password']."', '".$activ['email']."', 0)");
mysql_query("DELETE FROM `user_activate` WHERE `id`='$activ[id]'");
echo "Аккаунт активирован <br><a href=index.php>На главную</a>";
?>
Спустя 5 минут, 48 секунд (24.05.2010 - 06:37) zarafar написал(а):
<form method="post" action="index.php?acti=user" name="activate" >
Так, а что в этом фале index.php?acti=user происходит ? (код напиши)
Спустя 4 минуты, 27 секунд (24.05.2010 - 06:41) Remka написал(а):
Это эмитация ЧПУ через index.php
там следующее
а изначально все конектится вот к этой форме
после нее уже идет activate.php и activated.php
там следующее
$acti = trim(isset($_POST['acti']) ? $_POST['acti'] : $_GET['acti']);
if ($ac != '')
include('engine/module/user/activate.php');
а изначально все конектится вот к этой форме
<form method="post" action="index.php?ac=user">
<table align=center width=90%>
<tr>
<td>Логин*</td>
<td><input type="text" name="login" maxlength="25" /></td>
</tr>
<tr>
<td>Пароль*</td>
<td><input type="password" name="password" maxlength="25" /></td>
</tr>
<tr>
<td>email*</td>
<td><input type="text" name="email" maxlength="25" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="submit" value="Регистрация" /></td>
</tr>
</table>
</form>
после нее уже идет activate.php и activated.php
Спустя 1 минута, 51 секунда (24.05.2010 - 06:43) Remka написал(а):
в индексе вот это
$ac = trim(isset($_POST['ac']) ? $_POST['ac'] : $_GET['ac']);
$acti = trim(isset($_POST['acti']) ? $_POST['acti'] : $_GET['acti']);
if ($ac != '')
include('engine/module/user/activate.php');
elseif ($acti != '')
include('engine/module/user/activated.php');
Спустя 13 минут, 23 секунды (24.05.2010 - 06:56) zarafar написал(а):
Тяжело читать столько кода. Нужно учиться отлаживать программы. Нужно локализовывать проблемное место, отбрасывая весь второстепенный код, не относящийся к проблеме.
Выведи $_POST в index.php и посмотри, что приходит когда ты заполняешь вот эту форму <form method="post" action="index.php?acti=user" name="activate" >
P.S. на всякий случай, чтобы вывести массив можно использовать print_r($_POST);
Выведи $_POST в index.php и посмотри, что приходит когда ты заполняешь вот эту форму <form method="post" action="index.php?acti=user" name="activate" >
P.S. на всякий случай, чтобы вывести массив можно использовать print_r($_POST);
Спустя 1 минута, 33 секунды (24.05.2010 - 06:58) Remka написал(а):
Я НАШЕЛ ОШИБКУ=)))))
Там скобки -(". $_POST["part2"] .")-
Вот так надо=)
Спасибо тбе огромное за помощь!
<?php
if(isset($_POST['reg'])){
$s_active = "". $_POST["part1"] ."-(". $_POST["part2"] .")-". $_POST["part3"] ."-". $_POST["part4"] ."-". $_POST["part5"] ."";
}
Там скобки -(". $_POST["part2"] .")-
<?php
if(isset($_POST['reg'])){
$s_active = "". $_POST["part1"] ."-". $_POST["part2"] ."-". $_POST["part3"] ."-". $_POST["part4"] ."-". $_POST["part5"] ."";
}
Вот так надо=)
Спасибо тбе огромное за помощь!
Спустя 31 секунда (24.05.2010 - 06:59) Remka написал(а):
Я в данный момен пока все в куче делаю
потом буду отлаживать.
потом буду отлаживать.
Спустя 1 минута, 16 секунд (24.05.2010 - 07:00) zarafar написал(а):
Капец, ты же говорил
Цитата |
попытался распечатать $s_active ничего не вышло |
Как ты его распечатывал тогда ??
Спустя 3 минуты, 30 секунд (24.05.2010 - 07:03) zarafar написал(а):
И рекомендую прочитать хотя бы вот эту статью Составление запросов, особое внимание обратить на важное значение ф-ции mysql_real_escape_string().