[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Где может быть ошибка?
Oliver Varnce
Есть форма на подписку на рассылки, баннальная:

<form method="post" action="/{LANG}/sendmail_linked.php" name="email">
<input name="email" type="text" value ="" />
<input type="submit" name="submit" class="submit" value="Подписаться" />

</form>



Подскажите где я допустил ошибку?

if($_POST['submit']) 
{

if(isset($_POST['email'])){
$email = addslashes ($email);
if(isset($_POST['email']))
{
if(preg_match("|^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,4}$|i", $_POST['email']))
{
$query1 = "SELECT * FROM `sendmail` WHERE `email` LIKE" .$_POST['email'].
$result1 = mysql_query($query1);
if ($result1 == $_POST['email'])
{
$content = 'Вы уже подписаны на наши рассылки!'
}else{


$query = "INSERT INTO `sendmail` (email) VALUES ('".$_POST['email']."')";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
$content = 'Ваш адрес почты <b>' .$_POST['email']. '</b> внесен в базу данных!<br>
Теперь вы сможете получать от нас информацию о недвижимости в Харькове.<br>'
;
}
}
else{ $content = 'Вы ввели неверный формат почты. Пожалуйста введите в таком формате example@site.com';
}
}
}
}




Спустя 10 минут, 22 секунды (24.06.2011 - 11:40) Игорь_Vasinsky написал(а):
Может про ошибку ещё что нить добавишь, например, какая она...

А вот этот момент:

Цитата
query1 = "SELECT * FROM `sendmail` WHERE `email` LIKE" .$_POST['email'].


Почему LIKE???

У тя будет подписан yana@mail.ru, а 81yana@mail.ru уже не подпишется.
Сделай лучше так
query1 = "SELECT * FROM `sendmail` WHERE `email`  = '".$_POST['email']."'


Может это твоя опечатка
Цитата
email` LIKE" .$_POST['email'].
не хватает ковычки закрывающей, а лучше ешё в одинарные поставить

Спустя 5 минут, 14 секунд (24.06.2011 - 11:45) T1grOK написал(а):
Есть форма на подписку на рассылки.....
ГДЕ ОШИБКА? Есть форма подписки на рассылку. - вот правильно, а у вас неправильно построено предложение smile.gif (Извините не сдержался)

Спустя 2 минуты, 18 секунд (24.06.2011 - 11:47) Oliver Varnce написал(а):
T1grOK Сорри, поправлю щас)

Спустя 1 минута, 8 секунд (24.06.2011 - 11:48) bulgakov написал(а):
Я так бегло просмотрел... ну примерно такие ошибки:



<?php
if($_POST['submit']) // может быть лучше тут использовать проверку типа if($_SERVER['REQUEST_METHOD'=='POST'])
{

if(isset($_POST['email'])){ // проверка на существование переменной, по моему лучше тут проверять
//на пустоту переменной потому как даже если форма пустая то она все равно будет отправляться
// if(!empty($_POST['email']))

$email = addslashes ($email);
if(isset($_POST['email'])) // опять же лучше через empty
{
if(preg_match("|^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,4}$|i", $_POST['email'])) // в регулярках я не силен но зачем вторым параметром передавать необработанный POST
//в то время как у вас уже есть обработанная переменная $email? Ее и передавайте

{
$query1 = "SELECT * FROM `sendmail` WHERE `email` LIKE" .$_POST['email']. // В запросе вместо звездочки лучше писать конкретные поля таблицы которые вам нужны и помоему лучше использовать обычные кавычки а не обратные и опять же сырые данные из POST, зачем тогда создавали $email?
$result1 = mysql_query($query1); // всегда проверяйте успешность работы с базой данных
if ($result1 == $_POST['email']) // опять сырой POST и перед использованием $result1 вам нужно обработать ее, так как эта переменна содержит Ресурс, извлеките из нее нужные вам данные например email с помощью ну например mysql_fetch_assoc()
{
$content = 'Вы уже подписаны на наши рассылки!' // точки с запятой нету
}else{


$query = "INSERT INTO `sendmail` (email) VALUES ('".$_POST['email']."')"; // повторяющиеся ошибки
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
$content = 'Ваш адрес почты <b>' .$_POST['email']. '</b> внесен в базу данных!<br>
Теперь вы сможете получать от нас информацию о недвижимости в Харькове.<br>'
;
}
}
else{ $content = 'Вы ввели неверный формат почты. Пожалуйста введите в таком формате example@site.com';
}
}
}
}


?>

Спустя 1 минута, 50 секунд (24.06.2011 - 11:50) Oliver Varnce написал(а):

не
Цитата
if(isset($_POST['email'])){ // проверка на существование переменной, по моему лучше тут проверять
          //на пустоту переменной потому как даже если форма пустая то она все равно будет отправляться
          // if(!empty($_POST['email']))


не будет, у меня дальше проверка на формат почты, если не соответствует формату то не отправит.

Спустя 1 минута, 42 секунды (24.06.2011 - 11:52) bulgakov написал(а):
Просто это условие у вас будет всегда true смысл тогда в нем?

Спустя 5 минут, 18 секунд (24.06.2011 - 11:57) Игорь_Vasinsky написал(а):
Цитата
// может быть лучше тут использовать проверку типа if($_SERVER['REQUEST_METHOD'=='POST'])

А я бы рекомендовал
if(isset($_POST['submit']))


ТС, ошибку выложи., по предидущему посту сравни конечно.

Опять же, если используешь юникод, добывь модификатор "u" и тире с точкой в логине проверяй

if(preg_match("|^[0-9a-z_\-\.]+@[0-9a-z_^\-\.]+\.[a-z]{2,4}$|iu", $_POST['email'])) 

опять же бегло.

Спустя 2 минуты, 43 секунды (24.06.2011 - 12:00) bulgakov написал(а):
Да лучше все таки выложи опять же ошибки которые выводятся и уже от них будем исходить, ну и попробуй исправить то о чем тут уже написали.

Спустя 20 минут, 14 секунд (24.06.2011 - 12:20) Oliver Varnce написал(а):
Вот что выдает:
Ваш адрес почты внесен в базу данных!
Теперь вы сможете получать от нас информацию о недвижимости в Харькове.


тоесть после Ваш адрес почты идет переменная $email она не отображается


вот код поправленный с учетом рекомендаций выше:

if($_POST['submit'])
{

if(isset($_POST['email'])){
$email = addslashes ($email);
if(isset($_POST['email']))
{
if(preg_match("|^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,4}$|i", $_POST['email'])) // по другому проверку не хочет проводить!!!
{

$query1 = "SELECT `email` FROM `sendmail` WHERE `email` = '".$email."'";
$result1 = mysql_query($query1)or die('Query failed: ' . mysql_error());
$row = mysql_fetch_assoc($result1);
if ($result1 == $email)
{
$content = 'Вы уже подписаны на наши рассылки!';
}else{


$query = "INSERT INTO `sendmail` (email) VALUES ('".$email."')";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
$content = 'Ваш адрес почты <b>' .$email. '</b> внесен в базу данных!<br>
Теперь вы сможете получать от нас информацию о недвижимости в Харькове.<br>'
;
}
}
else
{ $content = 'Вы ввели неверный формат почты. Пожалуйста введите в таком формате example@site.com';}
}
}
}

Спустя 9 минут (24.06.2011 - 12:29) bulgakov написал(а):
Дабы не загромождать тему, привед кусок кода вашего:



$row = mysql_fetch_assoc($result1); // да массив вы получили,
if ($result1 == $email) // но тут ошибка, вам нужно сверяться не с переменной которая содержит ресурс а с нужной ячейкой массива $row
//посмотрите значения этого массива через например print_r($row) или же если знаете название ячейки сверяетесь с ней например if($row['email'] == $email)



Спустя 2 часа, 37 минут, 7 секунд (24.06.2011 - 15:06) Игорь_Vasinsky написал(а):
if ($result1) 					 
$content = 'Вы уже подписаны на наши рассылки!';

и регулярка

if(preg_match("|^[0-9a-z_\.\-]+@[0-9a-z_^\.\-]+\.[a-z\.\-]{2,4}$|iu", $_POST['email']))


_____________
мой хостинг - GlobalNET.com.ua
Быстрый ответ:

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