|
|
|
| Делаю БД с использованием PHP. На случай,если пользователь забыл свой пароль,хочу чтобы он мог его восстановить по email адресу. Но чтобы считывался сам адрес после нажатия кнопки. А у меня получается,что как только загружается страница,считывается пустое поле и выдается строка,типа такого нет адреса. Помогите исправить код,только не очень мудрено,я новичек в этом деле,разбираюсь только 3 день,а к субботе надо сдать готовую БД. Если увидите еще какие ошибки в моем коде,то поправьте,например,чтобы если нет такого адреса он не выводил окошко,что мол ошиблись,а страница с полем для ввода оставалась. Заранее спасибо :)
<?php
include("main.php");
include("inc/header.php");
if( ($_POST['submit'] <> "") && (isset($_POST['submit'])) )
{
$db = @mysql_connect($db_location,$db_user,$db_passwd);
mysql_select_db($db_name, $db);
if (!$db)
{
echo( "<P>В настоящий момент сервер базы данных не доступен,
поэтому корректное отображение страницы невозможно.</P>");
exit();
}
$sql="select * from users where email='".$_POST['email']."'";
$result=mysql_query($sql);
$num_row=mysql_num_rows($result);
if($num_row!=0) {
$result = mysql_query("select passwd1 from users where email='".$_POST['email']."'");
$password = mysql_result($result, 0);
$result = mysql_query("select login from users where email='".$_POST['email']."'");
$username = mysql_result($result, 0);
$msg = "
Ваш Логин: $username
Ваш Пароль: $password
";
echo "<br> $msg";
} else {
echo "<BR><center><B>В Базе Данных нет такого Email адреса.</B></center>";
}
} else {
echo "<br><b>Для Восстановления Пароля</b>, укажите пожалуйста ваш email адрес.\n";
echo "<br>Логин и Пароль вашего аккаунта будут вам отправлены.<br><br>\n";
?>
<form action="<?php echo $PHP_SELF;?>" method="post"><b>Email: </b><input type="text" name="email" value="">
<input type=submit name=submit value=Submit></form><br>
<?php
}
include("inc/footer.php");
?> | |
|
|
|
|
|
|
|
для: Super[MAN]
(15.06.2008 в 20:00)
| | Что касается замечаний...
1. > if( ($_POST['submit'] <> "") && (isset($_POST['submit'])) )
Надо поменять местами условия.
2. > $sql="select * from users where email='".$_POST['email']."'";
Перед формированием запроса, нужно подготовить строку к подобной процедуре, то есть эскейпировать все специальные символы. Для этого есть mysql_escape_string():
$sql="select * from users where email='". mysql_escape_string($_POST['email'])."'";
Правда надо будет позаботиться о том, чтобы каждое строковое значение $_POST было обработано stripslashes(), если включен режим magic_quotes_gpc. Этот ... режим проверяется с помощью get_magic_quotes_gpc():
<?php
if( get_magic_quotes_gpc() )
{
# ...
}
?>
|
Можно написать рекурсивную функцию для того, чтобы пройтись по всем элементам массива.
В остальных запросах с $_POST['email'] поступать так же.
3.
> $msg = "
> Ваш Логин: $username
> Ваш Пароль: $password
> ";
> echo "<br> $msg";
У Вас в имя пользователя и пароль могут содержать <, >, &? Если да, то нужно применять htmlspecialchars() перед выводом.
4. > $PHP_SELF
Откуда это? Может Вы имели ввиду $_SERVER['PHP_SELF']? Это совершенно разные вещи.
----------------------------------------
Что касается ошибки: такого вроде быть не должно.
P.S. Надеюсь, что Вы действительно собираетесь посылать данные на e-mail, а не предъявлять пароль просто после ввода электронного адреса? | |
|
|
|
|
|
|
|
для: BinLaden
(15.06.2008 в 20:10)
| | Спасибо,правда я тут покапался на форуме,нашел кусок кода,как раз с тем,что мне нужно. Правда там совсем простой вариант,исправил кое-что:
if(isset($_POST['submit']))
{соединение с базой}
$email = $_POST['email'];
if (empty($email))
{echo "<center>E-mail осталось пустым!<a href = 'javascript:history.back(1)' class = 'enter'>НАЗАД</a></center>";}
...и дальше как у меня
Сейчас буду документацию по данным вами функциям читать,дали интересную пишу для размышления.
Я же говорю,что начал разбираться в этом 3 дня назад и,блин,что-то затянуло,понравилось. Мне по курсовой надо сделать,так что отправка логина и пароля на ящик не нужна.
А $PHP_SELF как я сам понял (документацию не читал :( ) что форма обрабатывает саму себя.
P.S. Подскажите какую-нибудь стоящую литературу по PHP | |
|
|
|
|
|
|
|
для: Super[MAN]
(15.06.2008 в 20:32)
| | :) Блин,поменять местами...точно! :) | |
|
|
|
|
|
|
|
для: Super[MAN]
(15.06.2008 в 20:32)
| | Здорово,все работает!!! :) | |
|
|
|
|
|
|
|
для: Super[MAN]
(15.06.2008 в 20:32)
| | > Мне по курсовой надо сделать,так что отправка логина и пароля на ящик не нужна
Курсовые меняют представление о мире:) | |
|
|
|
|
|
|
|
для: BinLaden
(15.06.2008 в 20:10)
| | А через alert можно вывести какие-нибудь переменные?
Например так как-нибудь (только так не работает):
echo "<script>";
echo "alert ('$msg');";
echo "</script>"; | |
|
|
|
|
|
|
|
для: Super[MAN]
(15.06.2008 в 20:54)
| | И чем это будет лучше? | |
|
|
|
|
|
|
|
для: Super[MAN]
(15.06.2008 в 20:00)
| | Извините, если отвлекаю, вопрос от чайника:
if( ($_POST['submit'] <> "") && (isset($_POST['submit'])) )
|
Не должно ли здесь использоваться поле name="email":
if( ($_POST['email'] <> "") ...
Только не обижайтесь и не ругайтесь, пожалуйста. | |
|
|
|
|
|
|
|
для: dyadya
(15.06.2008 в 21:19)
| | >Не должно ли здесь использоваться поле name="email":
if( ($_POST['email'] <> "") ...
Да я сам то чайник в этом деле :)
Но так,использоваться не должно. Если ты так напишешь,то при нажатие кнопки name=submit и при пустом поле для ввода email'a ничего не произойдет. А надо же чтобы тебе говорили мол есть такой адрес в БД или нет. | |
|
|
|
|
|
|
|
для: Super[MAN]
(16.06.2008 в 08:05)
| | Как при обновление страницы уничтожить текст, выведенный echo? | |
|
|
|
|
|
|
|
для: Super[MAN]
(16.06.2008 в 08:11)
| | Никак. Нужно не текст уничтожать, а не допускать условия его возникновения. | |
|
|
|
|
|
|
|
для: sim5
(16.06.2008 в 08:39)
| | А если возникла ситуация,что нужно пользователю вывести все данные о нем и после просмотра этих данных,пользователь их мог уничтожить эту выведенную инфу в целях безопасности?
Только вариант отправка пользователю данных на email не подходит. | |
|
|
|
|
|
|
|
для: Super[MAN]
(16.06.2008 в 12:38)
| | При чем тут тогда обновление? Ну показали пользователю кто он такой ну и что? Данные о пользователе вы у себя на сервере собираете или это делает пользователь на своем компьютере? Что значит уничтожил пользователь - закрыл браузер или перешел на другую страницу? О какой безопасности вы говорите? | |
|
|
|
|
|
|
|
для: sim5
(16.06.2008 в 12:49)
| | :) | |
|
|
|