$sql = "SELECT id_user FROM subscribe_users WHERE email LIKE '{$useremail}'";
$data = mysql_query($sql) or die($sql);
$row = mysql_fetch_array($data);
$col = mysql_num_rows();
if ($col == 0)
{
$sql = "INSERT INTO subscribe_users (id_user, email, utime, conf_code) VALUES('', '$useremail', '$utime', '$conf_code')";
mysql_query($sql) or die($sql);
$last_id = mysql_insert_id();
print("<br><br>$sql<br><br>");
}
else
{
$sql = "UPDATE subscribe_users SET conf_code='$conf_code' WHERE email LIKE '{$useremail}'";
print("<br><br>$sql<br><br>");
$data = mysql_query($sql) or die($sql);
$sql = "SELECT id_user FROM subscribe_users WHERE conf_code='$conf_code' AND email LIKE '{$useremail}'";
$data = mysql_query($sql) or die($sql);
$row = mysql_fetch_array($data);
$last_id = $row[id_user];
}
Код отрабатывет два раза. Ошибка или глюк?
Очень странные глюки возникают... Если ввожу майл который ниразу не вводил то скрипт отрабатывает неправельно, и генерит один ключ а отсылает другой. Стираю всю инфу по майлу из базы и завожу его опять... уже втрой или третий раз и скрипт работает как надо. Что это вообще такое? :eek:
Цитата:
Очень странные глюки возникают... Если ввожу майл который ниразу не вводил то скрипт отрабатывает неправельно, и генерит один ключ а отсылает другой. Стираю всю инфу по майлу из базы и завожу его опять... уже втрой или третий раз и скрипт работает как надо. Что это вообще такое? :eek:
Если вы приведете кусок вашего кода, где "скрипт отрабатывает неправельно", будет проще найти ошибку.
Как правило (в 98%) можно с уверностью сказать что это руки. Подробности только после просмотра кода. А лучше поучись сам искать ошибки. Поставь на локальную машину xdebug и вперёд.
delete this msg
Код:
if ((isset($subscribe)) AND ((isset($newslist)) OR (isset($afishalist))))
{
$sql = "SELECT count(id_user) as col FROM subscribe_users WHERE email='$useremail'";
$data = mysql_query($sql);
$row = mysql_fetch_array($data);
$res10 = $row[col];
if ($res10 == 0)
{
$sql = "INSERT INTO subscribe_users (id_user, email, utime, conf_code) VALUES('', '$useremail', '$utime', '$conf_code')";
print("<br><br>$sql<br><br>");
mysql_query($sql) or die($sql);
$last_id = mysql_insert_id();
}
print("<br><br> ----- $res10 ---------<br><br>");
if ($res10>0)
{
$sql = "UPDATE subscribe_users SET conf_code='$conf_code' WHERE email='$useremail'";
print("<br><br>$sql<br><br>");
$data = mysql_query($sql) or die($sql);
$sql = "SELECT id_user FROM subscribe_users WHERE conf_code='$conf_code' AND email='$useremail'";
$data = mysql_query($sql);
$row = mysql_fetch_array($data);
$last_id = $row[id_user];
}
if (isset($newslist))
{
$sql = "INSERT INTO subscribe_users_groups SET id_user='$last_id', id_group='20'";
$res1 = mysql_query($sql);
}
if (isset($afishalist))
{
$sql = "INSERT INTO subscribe_users_groups SET id_user='$last_id', id_group='21'";
$res2 = mysql_query($sql);
}
if ($res1 == FALSE)
{
print("<br><span class=\"subtitle\">Вы уже подписаны на \"Новости Meeting.lv\"</span><br>");
}
if ($res2 == FALSE)
{
print("<br><span class=\"subtitle\">Вы уже подписаны на \"Анонсы афиши\"</span><br>");
}
if (($res1 == TRUE) OR ($res2 == TRUE))
{
$headers = 'Content-type:text/html; Charset=windows-1251' . "\r\n" . 'From: editor@site.lv' . "\r\n" . 'Reply-To: editor@site.lv' . "\r\n" . 'X-Mailer: PHP/' . phpversion();
$body_tmp = "Зайдите по этой ссылке, чтобы подтвердить подписку<br><br> <a href=\"http://www.site.lv/service/subscribe.php?confirm=do&email=$useremail&code=$conf_code\" target=\"_blank\">http://www.site.lv/service/subscribe.php?confirm=do&email=$useremail&code=$conf_code</a>";
mail($useremail, "Confirm link from Meeting.LV", $body_tmp, $headers);
print("<br><br>$body_tmp<br><br>");
print("<br><span class=\"subtitle\"><font color=\"red\">Спасибо!</font> <br> В ближайшее время на указанный вами e-mail<br> придет письмо со ссылкой, которую необходимо<br> будет активизировать.<br><br><a href=\"http://www.meeting.lv\">Перейти на главную</a></span><br>");
$hide_form = TRUE;
}
{
$sql = "SELECT count(id_user) as col FROM subscribe_users WHERE email='$useremail'";
$data = mysql_query($sql);
$row = mysql_fetch_array($data);
$res10 = $row[col];
if ($res10 == 0)
{
$sql = "INSERT INTO subscribe_users (id_user, email, utime, conf_code) VALUES('', '$useremail', '$utime', '$conf_code')";
print("<br><br>$sql<br><br>");
mysql_query($sql) or die($sql);
$last_id = mysql_insert_id();
}
print("<br><br> ----- $res10 ---------<br><br>");
if ($res10>0)
{
$sql = "UPDATE subscribe_users SET conf_code='$conf_code' WHERE email='$useremail'";
print("<br><br>$sql<br><br>");
$data = mysql_query($sql) or die($sql);
$sql = "SELECT id_user FROM subscribe_users WHERE conf_code='$conf_code' AND email='$useremail'";
$data = mysql_query($sql);
$row = mysql_fetch_array($data);
$last_id = $row[id_user];
}
if (isset($newslist))
{
$sql = "INSERT INTO subscribe_users_groups SET id_user='$last_id', id_group='20'";
$res1 = mysql_query($sql);
}
if (isset($afishalist))
{
$sql = "INSERT INTO subscribe_users_groups SET id_user='$last_id', id_group='21'";
$res2 = mysql_query($sql);
}
if ($res1 == FALSE)
{
print("<br><span class=\"subtitle\">Вы уже подписаны на \"Новости Meeting.lv\"</span><br>");
}
if ($res2 == FALSE)
{
print("<br><span class=\"subtitle\">Вы уже подписаны на \"Анонсы афиши\"</span><br>");
}
if (($res1 == TRUE) OR ($res2 == TRUE))
{
$headers = 'Content-type:text/html; Charset=windows-1251' . "\r\n" . 'From: editor@site.lv' . "\r\n" . 'Reply-To: editor@site.lv' . "\r\n" . 'X-Mailer: PHP/' . phpversion();
$body_tmp = "Зайдите по этой ссылке, чтобы подтвердить подписку<br><br> <a href=\"http://www.site.lv/service/subscribe.php?confirm=do&email=$useremail&code=$conf_code\" target=\"_blank\">http://www.site.lv/service/subscribe.php?confirm=do&email=$useremail&code=$conf_code</a>";
mail($useremail, "Confirm link from Meeting.LV", $body_tmp, $headers);
print("<br><br>$body_tmp<br><br>");
print("<br><span class=\"subtitle\"><font color=\"red\">Спасибо!</font> <br> В ближайшее время на указанный вами e-mail<br> придет письмо со ссылкой, которую необходимо<br> будет активизировать.<br><br><a href=\"http://www.meeting.lv\">Перейти на главную</a></span><br>");
$hide_form = TRUE;
}
2. сделай запрос типа
Код:
$sql = "SELECT id_user FROM subscribe_users WHERE email LIKE '{$useremail}'";
и в $resl0 бери количество вернувшихся строк в результате
Код:
$mres = mysql_query($sql);
$resl0 = mysql_num_rows($mres);
$resl0 = mysql_num_rows($mres);
тогда ты с уверенностью можешь сказать, что если у тебя 0 вернулось, то юзеров таких нет и добавить нового, а если есть (вернулось не 0), то
Код:
while ($row = mysql_fetch_row($mres)) {
// тут твой UPDATE, брать id_user - $row[0] :)
}
// тут твой UPDATE, брать id_user - $row[0] :)
}
собссна я думаю (это не факт что это истина ;) ), что так будет работать.....
Вообще жесть творится :) Теперь запрос INSETRT который добавляет майл отрабатывает три или два раза с разным conf_code, майл просто дублируется!!! У меня в сркипте нет неодного цикла :mad:
while не нужен, если у тебя не могут дублироваться email адреса в таблице... вот :)
1. Для сравнения с булевой используй ===
2. Используй die(mysql_error()), она больше скажет чем скуль запрос.
Вытащи всё, что неотносится к делу (отладочные принты и т.д.), только проблемный код (это на будующее).
Спасибо за советы :) С горем пополам разобрался - переписал весь код заново, немного подругому.
на самом деле проблема так и не решилась... Третий день уже сижу :) Оказывается мой код отрабатывает иногда три иногда два раза. Причём дело не в коде а в файлах include наверное... У меня самописный движок, я пришёл он уже был написан. Загружа файл subscribe.php в этот файл подгнуржается index.php а уже в index.php код моего скрипта subscribe_code.php! Я поставил (в subscribe_code.php) простенький запрос INSERT, чтобы посмотреть сколько раз страница отрабатывает... Загружаю subscribe.php?umba=gfhd и вижу в базе появилась на одна запись, с сразу три :)) Хотя никакой перезагрузки страницы небыло... Самое интресное дальше если я буду продолжать выполнять именно это subscribe.php?umba=gfhd мой тестовый INSERT запрос отработает уже один раз, как только я сменю переметры на новые например subscribe.php?qwerty=ytrewq то опять получу три отработанных INSERT и если повторю ещё раз, то уже один INSERT отработает... А если вернусь к старому subscribe.php?umba=gfhd то опять получу только один INSERT! Вообще бред како-то я уже ничего не понимаю. Уже пробывал и require_once(); думал это в тему... но нет. У кого какие мысли что это вообще может быть? :rolleyes:
Переделать тот подключаемый файл
мне помогло в процессе разработки инет-магазина. у меня каталог (здаровенная такая фиговина) 3 раза подгружался......... теперь 1 раз :)