Подскажите пожалуйста, почему не отображается страница, хотя бы ошибки и т.д, а тут просто пустая страница...
<?php
---тут обрабатываем данные, полученные из формы---
include ("bd.php");
$result = mysql_query("SELECT id FROM registration WHERE last_name='$last_name' AND email='$email' AND activation='1'",$db);//такой ли у пользователя е-мейл
$myrow = mysql_fetch_array($result);
if (empty($myrow['id']) or $myrow['id']=='') {
//если активированного пользователя с таким логином и е-mail адресом нет
exit ("Пользователя с таким e-mail адресом не обнаружено<a href='index.php'>Главная страница</a>");
}
//если пользователь с таким логином и е-мейлом найден, то необходимо сгенерировать для него случайный пароль, обновить его в базе и отправить на е-мейл
--- тут пишем email ---
else {//если данные еще не введены
echo '
<html>
<head>
<title>Забыли пароль?</title>
</head>
<body>
<h2>Забыли пароль?</h2>
<form action="#" method="post">
Введите Вашу фамилию:<br> <input type="text" name="last_name"><br><br>
Введите Ваш E-mail: <br><input type="text" name="email"><br><br>
<input type="submit" name="submit" value="Отправить">
</form>
</body>
</html>';
}
?>
и у меня паказывает пустую страницу :(
Спустя 1 минута, 52 секунды (29.09.2011 - 10:42) TMake написал(а):
gab_ber в самое начало скрипта добавь -
посмотри что тебе выдает mysql_error ();
ini_set ( 'display_errors' , 'on' );
посмотри что тебе выдает mysql_error ();
Спустя 3 минуты, 49 секунд (29.09.2011 - 10:46) TMake написал(а):
Цитата (gab_ber @ 29.09.2011 - 11:40) |
last_name='$last_name' |
Цитата (gab_ber @ 29.09.2011 - 11:40) |
email='$email' |
Сразу изучай статьи по безопасности, а то будут дырки!
Спустя 5 минут, 8 секунд (29.09.2011 - 10:51) gab_ber написал(а):
stepan у меня и так стоит
никакой ошибки не высвечивается...просто пустая стр, никакого html кода...
ini_set('display_errors',1);
error_reporting(E_ALL);
никакой ошибки не высвечивается...просто пустая стр, никакого html кода...
Спустя 4 минуты, 3 секунды (29.09.2011 - 10:55) TMake написал(а):
Цитата (stepan @ 29.09.2011 - 11:42) |
посмотри что тебе выдает mysql_error (); |
Спустя 6 минут, 1 секунда (29.09.2011 - 11:01) gab_ber написал(а):
Цитата (stepan @ 29.09.2011 - 10:46) | ||||
Сразу изучай статьи по безопасности, а то будут дырки! |
про это не понял. можно поподробнее?!
ошибку нашел мозиловским Фаербагом...не было закрывающихся скобок '}', немного запутался с if....else
Спустя 30 минут, 26 секунд (29.09.2011 - 11:31) Renden написал(а):
gab_ber
include ("bd.php");
$result = mysql_query("SELECT id FROM registration WHERE last_name='$last_name' AND email='$email' AND activation='1'",$db);
if(!mysql_num_rows($result))
exit ("Пользователя с таким e-mail адресом не обнаружено<a href='index.php'>Главная страница</a>");
else {
Спустя 3 минуты, 52 секунды (29.09.2011 - 11:35) Renden написал(а):
gab_ber
Цитата |
Сразу изучай статьи по безопасности, а то будут дырки! про это не понял. можно поподробнее?! |
наверно имелось ввиду что нужно обрабатывать входящие данные из $_POST, я думаю у тя как-то так:
$last_name = $_POST['lastname'];
$email = $_POST['email'];
...
//а надо хотяб так:
$last_name = mysql_real_escape_string(trim($_POST['lastname']));
$email = mysql_real_escape_string(trim($_POST['email']));
...
Спустя 2 минуты, 45 секунд (29.09.2011 - 11:38) TMake написал(а):
Цитата (Renden @ 29.09.2011 - 12:35) |
наверно имелось ввиду что нужно обрабатывать входящие данные из $_POST, я думаю у тя как-то так: |
лучше сразу в запросе указывать mysql_real_escape_string иначе можешь забыть отфильтровать и тогда будет дыра
Спустя 40 минут, 56 секунд (29.09.2011 - 12:19) inpost написал(а):
gab_ber
И у тебя должна была ошибка выйти на эту строчку:
--- тут пишем email ---
mysql_query(запрос) or die(mysql_error());
И у тебя должна была ошибка выйти на эту строчку:
--- тут пишем email ---
Спустя 34 минуты, 39 секунд (29.09.2011 - 12:53) m4a1fox написал(а):
Я бы еще рекомендовал в подпись inpost'a заглянуть! Так как автор походу с курсов попова слез недавно! ИМХО конечно но все таки может быть и так!
Спустя 15 минут, 51 секунда (29.09.2011 - 13:09) XCross написал(а):
$result = mysql_query("SELECT id FROM registration WHERE last_name='$last_name' AND email='$email' AND activation='1'",$db);
Я, конечно, не inpost по-способностям, но по-моему автор не знает о конкатенации строк? И еще. 1 в апострофы не нужно обрамлять, это ведь не строка.
$result = mysql_query("SELECT id FROM registration WHERE last_name='.$last_name.' AND email='.$email.' AND activation=1") or die(mysql_error());
Во время отладки использую or die(mysql_error()); после запроса. Как уже сказали, используй mysql_real_escape_string.
$result = mysql_query("SELECT `id` FROM `registration` WHERE
`last_name` = '".mysql_real_escape_string($last_name)."' AND
`email` = '".mysql_real_escape_string($email)."' AND
`activation` = 1") or die(mysql_error());
Ну и напоследок. Имена полей обрамляй в обратные кавычки(Shift+Ё). Это нужно, чтоб в случае совпадения зарезервированного слова и имени поля не было ошибки.
Где-то так.
! |
inpost |
Спустя 6 минут, 15 секунд (29.09.2011 - 13:16) Winston написал(а):
Цитата (kmaks @ 29.09.2011 - 13:09) |
И еще. 1 в апострофы не нужно обрамлять, это ведь не строка. |
Все значения нужно обрамлять
Спустя 19 минут, 36 секунд (29.09.2011 - 13:35) XCross написал(а):
Цитата (Winston @ 29.09.2011 - 06:16) | ||
Все значения нужно обрамлять |
Врешь. Наверное
Спустя 8 минут, 21 секунда (29.09.2011 - 13:44) inpost написал(а):
Цифры можно не брать в кавычки. Уместнее слово "можно".
Я у себя их никогда не беру
Я у себя их никогда не беру
Спустя 7 минут, 24 секунды (29.09.2011 - 13:51) m4a1fox написал(а):
Можно еще и так
include './db(ибо database а не как у Попова (bd - тбо БазаДанных - т.е. BaseData)).php';
Спустя 1 минута, 39 секунд (29.09.2011 - 13:53) gab_ber написал(а):
а таким способом обрабатывать мало?
$email = substr($_POST["email"],0,32);
$email = htmlspecialchars(stripslashes($email));
Спустя 11 минут, 14 секунд (29.09.2011 - 14:04) m4a1fox написал(а):
gab_ber
Ну почему? Давай смотреть
Ну почему? Давай смотреть
Цитата |
$email = substr($_POST["email"],0,32); --обрезаем строку максимум 32 символа - нормально, дальше. $email = htmlspecialchars(stripslashes($email)); - 1 - переводим все символы в html формат, и 2 - удаляем экранированные слеши! |
stripslashes - если я напишу так m4a1/'Foxc@mail.ru - то на выходе мы получим
m4a1'Foxc@mail.ru
А теперь mysql_real_escape_string - я ввожу так m4a1'Foxc@mail.ru - выход - m4a1\'Foxc@mail.ru.
Чувствуешь разницу?
Спустя 1 минута, 13 секунд (29.09.2011 - 14:05) XCross написал(а):
В такой ситуации нужно использовать регулярное выражение.
Цитата (inpost @ 29.09.2011 - 06:44) |
Цифры можно не брать в кавычки. Уместнее слово "можно". Я у себя их никогда не беру |
Аналогично.
Спустя 1 час, 31 минута, 53 секунды (29.09.2011 - 15:37) inpost написал(а):
gab_ber
Пофантазируем, челове ввёл 33 символа для email, у него скрипт принял и написал, что он зарегистрирован.
Как ты думаешь, на какой из емейлов будет ждать посетитель письма? На 32 или на 33 символа?
stripslashes - магические кавычки отключи, и не пользуйся ею, будет только мешать.
Пофантазируем, челове ввёл 33 символа для email, у него скрипт принял и написал, что он зарегистрирован.
Как ты думаешь, на какой из емейлов будет ждать посетитель письма? На 32 или на 33 символа?
stripslashes - магические кавычки отключи, и не пользуйся ею, будет только мешать.
Спустя 15 минут, 31 секунда (29.09.2011 - 15:52) XCross написал(а):
Цитата |
stripslashes - магические кавычки отключи, и не пользуйся ею, будет только мешать. |
А лучше написать функцию, в которой будет проверка на активность "Магических кавычек" в настройках интерпритатора. Если активны, то обработает, если же нет - нет. А то на хостинг прийдет, а не все ведь позволят изменить настройки.
Спустя 5 минут, 53 секунды (29.09.2011 - 15:58) Winston написал(а):
Супер-мега-защита :D
Свернутый текст
function superPuperSecurity($data)
{
return trim(stripcslashes(addcslashes(mysql_real_escape_string(strip_tags($data)), '%\\_')));
}
echo superPuperSecurity("<script>alert('test');</script>");
Спустя 17 минут, 43 секунды (29.09.2011 - 16:16) inpost написал(а):
Winston
htmlspecialchars ещё добавь. И preg_replace по маске ~^.*$~ на ''
htmlspecialchars ещё добавь. И preg_replace по маске ~^.*$~ на ''
_____________
Что будет, если всеразрушающий шар врежется в неразрушимую стену??