|
 15.6 Кб |
|
| помогите пожалуйста проверить правильность введенных символов в капаче.
вот код
<?php include("blocs/bd.php");
if(isset($_POST['id'])){$id = $_POST['id'];}
// Запрет на кэширование
header("Expires: Mon, 23 May 1995 02:00:00 GTM");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GTM");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
//****
$log =="";
$error="no"; //флаг наличия ошибки
require_once 'JsHttpRequest.php';
$JsHttpRequest =& new JsHttpRequest("windows-1251");
//Короткие имена переменных и обрезка пробелов img_title
$comtext = trim($_POST['comtext']);
$email = trim($_POST['email']);
$name = trim($_POST['name']);
$code = trim($_POST['code']);
session_start();
if (!empty($_REQUEST['captcha']))
{
if (empty($_SESSION['captcha']) || trim(strtolower($_REQUEST['captcha'])) != $_SESSION['captcha'])
{
$note= 'Please enter valid text';
}
else
{
if($_SERVER["REQUEST_METHOD"] == "POST")
{
$name=htmlentities($_POST['name']);
$message=htmlentities($_POST['message']);
$email=htmlentities($_POST['email']);
$code=htmlentities($_POST['code']);
// Insert SQL Statement
$note= 'Values Inserted';
}
}
unset($_SESSION['captcha']);
}
//Проверка email адреса
function isEmail($email)
{
return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i"
,$email));
}
if($email == '')
{
$log .= "<div>Пожалуйста, введите Ваш email!</div>";
$error = "yes";
}
else if(!isEmail($email))
{
$log .= "<div>Вы ввели неправильный e-mail. Пожалуйста, исправьте его!</div>";
$error = "yes";
}
//Проверка наличия введенного текста комментария
//****
//Проверка наличия введенного текста комментария
if (empty($comtext))
{
$log .= "<div>Необходимо указать текст сообщения!</div>";
$error = "yes";
}
//****
//Проверка длины текста комментария
if(strlen($comtext)>500)
{
$log .= "<div>Слишком длинный текст, в вашем распоряжении 500 символов!</div>";
$error = "yes";
}
//****
//Проверка на наличие длинных слов
$mas = preg_split("/[\s]+/",$comtext);
foreach($mas as $index => $val)
{
if (strlen($val)>60)
{
$log .= "<div>Слишком длинные слова (более 60 символов) в тексте записи!</div>";
$error = "yes";
break;
}
}
//****
//Должнен быть хоть один символ на русском языке
$spam=1;
for($i=0;$i<strlen($comtext);$i++)
{
if((ord($comtext[$i])>=192) && (ord($comtext[$i])<=255)){$spam=0;break;}
}
if ($spam == 1)
{
$log .= "<div>В комментарии нет ни одной русской буквы. Не принимается!</div>";
$error = "yes";
}
//****
//Экранирование и преобразование опасных символов
if (!get_magic_quotes_gpc())
{
$comtext = addslashes($comtext);
$email = addslashes($email);
$img = addslashes($img);
}
$comtext = htmlspecialchars($comtext);
$email = htmlspecialchars($email);
$img = htmlspecialchars($img);
//****
//Если нет ошибок отправляем email
if($error=="no")
{
$date = date("Y-m-d");
$result2 = mysql_query ("INSERT INTO comments (post,author,comtext,date) VALUES ('$id','$name','$comtext','$date')",$db);
$prov = 0;
//Отправка письма админу о новом комментарии
$emailadmin = 'antosha2027@gmail.com';//e-mail админа
$result3 = mysql_query ("SELECT title FROM lessons WHERE id='$id'",$db);
$myrow3 = mysql_fetch_array ($result3);
$post_title = $myrow3["title"];
$sub=$post_title;
$mes = "Появился новый комментарий к уроку!\n".$post_title."\n\nкоментарий добавил: ".$name."\n ".$comtext."\n\nСсылка на страничку: http://anton-blogdesign.pokupki39.ru/blog/lessons.php?id=".$id."";
$from = $email;
$to = $emailadmin;
$sub = '=?windows-1251?B?'.base64_encode($post_title).'?=';
$headers = 'From: '.$from.'
';
$headers .= 'MIME-Version: 1.0
';
$headers .= 'Content-type: text/plain; charset=windows-1251
';
mail($to,$sub, $mes, $headers);
//****
$ok ="<p style='font-family:Verdana; text-align:center; font-size:12px; border:1px solid #0c7f00; padding:5px; margin-bottom:20px; background-color:#ffffff;'><strong>Спасибо! Ваше сообщение отправлено!</strong></p>";
// преобразуем Enter в перенос строки
$comtext=str_replace("\n","<br>\n",$comtext);
//****
//Помещаем результат в массив
$GLOBALS['_RESULT'] = array(
'error' => 'no',
'text' => $comtext,
'ok' => $ok
);
//****
}
else//если ошибки есть
{
$log = "<p align='center'><font color=#cc0000><strong>Ошибка</strong></font></p><ul style='font-family:Verdana; font-size:12px; border:2px solid #cc0000; padding:10px; margin:20px; width:570px;'>".$log."</ul>";
//Отправляем результат в массив
$GLOBALS['_RESULT'] = array(
'error' => 'yes',
'er_mess' => $log);
}
?>
|
| |
|
|
|
|
|
|
|
для: antosha23
(31.01.2011 в 16:02)
| | Вы издеваетесь? Вам буквально недавно вот про это говорили:
$message=htmlspecialchars($_POST['message']);
а оно так и осталось. | |
|
|
|
|
|
|
|
для: sim5
(31.01.2011 в 16:05)
| |
<?php include("blocs/bd.php");
if(isset($_POST['id'])){$id = $_POST['id'];}
// Запрет на кэширование
header("Expires: Mon, 23 May 1995 02:00:00 GTM");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GTM");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
//****
$log =="";
$error="no"; //флаг наличия ошибки
require_once 'JsHttpRequest.php';
$JsHttpRequest =& new JsHttpRequest("windows-1251");
//Короткие имена переменных и обрезка пробелов img_title
$comtext = trim($_POST['comtext']);
$email = trim($_POST['email']);
$name = trim($_POST['name']);
$code = trim($_POST['code']);
session_start();
if (!empty($_REQUEST['captcha']))
{
if (empty($_SESSION['captcha']) || trim(strtolower($_REQUEST['captcha'])) != $_SESSION['captcha'])
{
$note= 'Please enter valid text';
}
else
{
if($_SERVER["REQUEST_METHOD"] == "POST")
{
$name=htmlentities($_POST['name']);
$email=htmlentities($_POST['email']);
$code=htmlentities($_POST['code']);
// Insert SQL Statement
$note= 'Values Inserted';
}
}
unset($_SESSION['captcha']);
}
//Проверка email адреса
function isEmail($email)
{
return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i"
,$email));
}
if($email == '')
{
$log .= "<div>Пожалуйста, введите Ваш email!</div>";
$error = "yes";
}
else if(!isEmail($email))
{
$log .= "<div>Вы ввели неправильный e-mail. Пожалуйста, исправьте его!</div>";
$error = "yes";
}
//Проверка наличия введенного текста комментария
//****
//Проверка наличия введенного текста комментария
if (empty($comtext))
{
$log .= "<div>Необходимо указать текст сообщения!</div>";
$error = "yes";
}
//****
//Проверка длины текста комментария
if(strlen($comtext)>500)
{
$log .= "<div>Слишком длинный текст, в вашем распоряжении 500 символов!</div>";
$error = "yes";
}
//****
//Проверка на наличие длинных слов
$mas = preg_split("/[\s]+/",$comtext);
foreach($mas as $index => $val)
{
if (strlen($val)>60)
{
$log .= "<div>Слишком длинные слова (более 60 символов) в тексте записи!</div>";
$error = "yes";
break;
}
}
//****
//Должнен быть хоть один символ на русском языке
$spam=1;
for($i=0;$i<strlen($comtext);$i++)
{
if((ord($comtext[$i])>=192) && (ord($comtext[$i])<=255)){$spam=0;break;}
}
if ($spam == 1)
{
$log .= "<div>В комментарии нет ни одной русской буквы. Не принимается!</div>";
$error = "yes";
}
//****
//Экранирование и преобразование опасных символов
if (!get_magic_quotes_gpc())
{
$comtext = addslashes($comtext);
$email = addslashes($email);
$img = addslashes($img);
}
//****
//Если нет ошибок отправляем email
if($error=="no")
{
$date = date("Y-m-d");
$result2 = mysql_query ("INSERT INTO comments (post,author,comtext,date) VALUES ('$id','$name','$comtext','$date')",$db);
$prov = 0;
//Отправка письма админу о новом комментарии
$emailadmin = 'antosha2027@gmail.com';//e-mail админа
$result3 = mysql_query ("SELECT title FROM lessons WHERE id='$id'",$db);
$myrow3 = mysql_fetch_array ($result3);
$post_title = $myrow3["title"];
$sub=$post_title;
$mes = "Появился новый комментарий к уроку!\n".$post_title."\n\nкоментарий добавил: ".$name."\n ".$comtext."\n\nСсылка на страничку: http://anton-blogdesign.pokupki39.ru/blog/lessons.php?id=".$id."";
$from = $email;
$to = $emailadmin;
$sub = '=?windows-1251?B?'.base64_encode($post_title).'?=';
$headers = 'From: '.$from.'
';
$headers .= 'MIME-Version: 1.0
';
$headers .= 'Content-type: text/plain; charset=windows-1251
';
mail($to,$sub, $mes, $headers);
//****
$ok ="<p style='font-family:Verdana; text-align:center; font-size:12px; border:1px solid #0c7f00; padding:5px; margin-bottom:20px; background-color:#ffffff;'><strong>Спасибо! Ваше сообщение отправлено!</strong></p>";
// преобразуем Enter в перенос строки
$comtext=str_replace("\n","<br>\n",$comtext);
//****
//Помещаем результат в массив
$GLOBALS['_RESULT'] = array(
'error' => 'no',
'text' => $comtext,
'ok' => $ok
);
//****
}
else//если ошибки есть
{
$log = "<p align='center'><font color=#cc0000><strong>Ошибка</strong></font></p><ul style='font-family:Verdana; font-size:12px; border:2px solid #cc0000; padding:10px; margin:20px; width:570px;'>".$log."</ul>";
//Отправляем результат в массив
$GLOBALS['_RESULT'] = array(
'error' => 'yes',
'er_mess' => $log);
}
?>
|
| |
|
|
|
|
|
|
|
для: antosha23
(31.01.2011 в 16:08)
| | но все же как проверить | |
|
|
|
|
|
|
|
для: antosha23
(31.01.2011 в 16:08)
| | Не надо повторять.
А это зачем:
$name=htmlentities($_POST['name']);
$email=htmlentities($_POST['email']);
$code=htmlentities($_POST['code']);
?
Зачем вы применяте то сути чего не понимаете? К тому же, если вопрос о капче, зачем вываливать код, который к ней не имеет отношения? | |
|
|
|
|
|
|
|
для: sim5
(31.01.2011 в 16:12)
| |
<?php include("blocs/bd.php");
if(isset($_POST['id'])){$id = $_POST['id'];}
// Запрет на кэширование
header("Expires: Mon, 23 May 1995 02:00:00 GTM");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GTM");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
//****
$log =="";
$error="no"; //флаг наличия ошибки
require_once 'JsHttpRequest.php';
$JsHttpRequest =& new JsHttpRequest("windows-1251");
//Короткие имена переменных и обрезка пробелов img_title
$comtext = trim($_POST['comtext']);
$email = trim($_POST['email']);
$name = trim($_POST['name']);
$code = trim($_POST['code']);
session_start();
if (!empty($_REQUEST['captcha']))
{
if (empty($_SESSION['captcha']) || trim(strtolower($_REQUEST['captcha'])) != $_SESSION['captcha'])
{
$note= 'Please enter valid text';
}
else
{
if($_SERVER["REQUEST_METHOD"] == "POST")
{
// Insert SQL Statement
$note= 'Values Inserted';
}
}
unset($_SESSION['captcha']);
}
//Проверка email адреса
function isEmail($email)
{
return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i"
,$email));
}
if($email == '')
{
$log .= "<div>Пожалуйста, введите Ваш email!</div>";
$error = "yes";
}
else if(!isEmail($email))
{
$log .= "<div>Вы ввели неправильный e-mail. Пожалуйста, исправьте его!</div>";
$error = "yes";
}
//Проверка наличия введенного текста комментария
//****
//Проверка наличия введенного текста комментария
if (empty($comtext))
{
$log .= "<div>Необходимо указать текст сообщения!</div>";
$error = "yes";
}
//****
//Проверка длины текста комментария
if(strlen($comtext)>500)
{
$log .= "<div>Слишком длинный текст, в вашем распоряжении 500 символов!</div>";
$error = "yes";
}
//****
//Проверка на наличие длинных слов
$mas = preg_split("/[\s]+/",$comtext);
foreach($mas as $index => $val)
{
if (strlen($val)>60)
{
$log .= "<div>Слишком длинные слова (более 60 символов) в тексте записи!</div>";
$error = "yes";
break;
}
}
//****
//Должнен быть хоть один символ на русском языке
$spam=1;
for($i=0;$i<strlen($comtext);$i++)
{
if((ord($comtext[$i])>=192) && (ord($comtext[$i])<=255)){$spam=0;break;}
}
if ($spam == 1)
{
$log .= "<div>В комментарии нет ни одной русской буквы. Не принимается!</div>";
$error = "yes";
}
//****
//Экранирование и преобразование опасных символов
if (!get_magic_quotes_gpc())
{
$comtext = addslashes($comtext);
$email = addslashes($email);
$img = addslashes($img);
}
//****
//Если нет ошибок отправляем email
if($error=="no")
{
$date = date("Y-m-d");
$result2 = mysql_query ("INSERT INTO comments (post,author,comtext,date) VALUES ('$id','$name','$comtext','$date')",$db);
$prov = 0;
//Отправка письма админу о новом комментарии
$emailadmin = 'antosha2027@gmail.com';//e-mail админа
$result3 = mysql_query ("SELECT title FROM lessons WHERE id='$id'",$db);
$myrow3 = mysql_fetch_array ($result3);
$post_title = $myrow3["title"];
$sub=$post_title;
$mes = "Появился новый комментарий к уроку!\n".$post_title."\n\nкоментарий добавил: ".$name."\n ".$comtext."\n\nСсылка на страничку: http://anton-blogdesign.pokupki39.ru/blog/lessons.php?id=".$id."";
$from = $email;
$to = $emailadmin;
$sub = '=?windows-1251?B?'.base64_encode($post_title).'?=';
$headers = 'From: '.$from.'
';
$headers .= 'MIME-Version: 1.0
';
$headers .= 'Content-type: text/plain; charset=windows-1251
';
mail($to,$sub, $mes, $headers);
//****
$ok ="<p style='font-family:Verdana; text-align:center; font-size:12px; border:1px solid #0c7f00; padding:5px; margin-bottom:20px; background-color:#ffffff;'><strong>Спасибо! Ваше сообщение отправлено!</strong></p>";
// преобразуем Enter в перенос строки
$comtext=str_replace("\n","<br>\n",$comtext);
//****
//Помещаем результат в массив
$GLOBALS['_RESULT'] = array(
'error' => 'no',
'text' => $comtext,
'ok' => $ok
);
//****
}
else//если ошибки есть
{
$log = "<p align='center'><font color=#cc0000><strong>Ошибка</strong></font></p><ul style='font-family:Verdana; font-size:12px; border:2px solid #cc0000; padding:10px; margin:20px; width:570px;'>".$log."</ul>";
//Отправляем результат в массив
$GLOBALS['_RESULT'] = array(
'error' => 'yes',
'er_mess' => $log);
}
?>
|
| |
|
|
|
|
|
|
|
для: antosha23
(31.01.2011 в 16:20)
| | Если вы еще раз повторите код свой, я плюну и все (другие не знаю как). Ибо и не только это, а еще вот это:
$comtext = addslashes($comtext);
$email = addslashes($email);
$img = addslashes($img);
для почтового отправления совсем лишнее. Вы сейчас просто уберете (даже не понимая почему лишнее, и надо ли убирать) и опять выставите?
Вот у вас проверяется код каптчи (только этот кусочек, а не вся портянка):
if (!empty($_REQUEST['captcha']))
{
if (empty($_SESSION['captcha']) || trim(strtolower($_REQUEST['captcha'])) != $_SESSION['captcha'])
{
$note= 'Please enter valid text';
}
| А помещение кода каптчи в сессию, это в файле генерирующем ее. | |
|
|
|
|
|
|
|
для: antosha23
(31.01.2011 в 16:20)
| | поможите или нет | |
|
|
|
|
|
|
|
для: antosha23
(31.01.2011 в 16:27)
| | В чем? Условие проверки каптчи, которое у вас в коде прописано, не противоречит истине. Что я могу сказать тут. Что за проблема с каптчей, конкретно что происходит, может причину не в этом коде искать надо, а в другом?
Что касается данного скрипта, по хорошему его просто выкинуть надо, это самое лучшее решение, которое я могу предложить, если вы сами не в состоянии понять, что htmlspecialchars не выбрасывать надо, а применять в том месте кода, где это требуется. А это требуется при возврате формы пользователю, при наличие ошибок ввода, ибо это предотвратит искажение html-кода, и "вредных" вставок в текст. Вы же просто вышвырнули и все.
Кстати, я не вижу чтобы была форма для возврата (хотя если этот код как часть подключаемых, тогда понятно). | |
|
|
|
|
|
|
|
для: sim5
(31.01.2011 в 16:05)
| | Все-таки такие здоровые листинги лучше прикреплять к сообщению - тяжело листать такие объемные темы. | |
|
|
|
|