Ну значит точно 1 База, которая называется "information_schema". Осталось разобраться где все остальные.
Я, наверное спать пойду, а ты посиди, подумай, может поймёшь что... --- Добавлено --- Вот, нагуглил. Поменяй запрос на этот: SELECT schema_name FROM information_schema.schemata;
Ну это конечно вряд ли )) Но подумать можно . Ок, спокойной ночи! --- Добавлено --- А как запрос меняется ?
У меня как раз уже 603 сообщения. Квест на сегодня я выполнил --- Добавлено --- PHP: $db = mysqli_connect ($localhost, $root, $ $pr2); $q = $db->query ("SELECT schema_name FROM information_schema.schemata;"); while ($res = $q->fetch_assoc()) { var_dump ($res); echo "<br>"; die(); }
вот : PHP: <?php $db = mysqli_connect ($localhost, $root, $ $pr2); $q = $db->query ("SELECT schema_name FROM information_schema.schemata;"); while ($res = $q->fetch_assoc()) { var_dump ($res); echo "<br>"; die(); } $login = mysql_real_escape_string($_POST['login']); $password = mysql_real_escape_string($_POST['password']); $email = mysql_real_escape_string($_POST['email']); // проверяем, если юзер в таблице с таким же логином $query = "SELECT `id` FROM `users` WHERE `login`='{$login}' LIMIT 1"; $sql = mysql_query($query) or die(mysql_error()); if (mysql_num_rows($sql)==1) { //если есть //генерируем пароль $simvols = array ("0","1","2","3","4","5","6","7","8","9", "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z", "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"); for ($key = 0; $key < 6; $key++) { shuffle ($simvols); $string = $string.$simvols[1]; } //перегоняем в md5 хэш $pass = md5(md5($string)); //переписываем пороль в базе уже хэшированый $query = "UPDATE `users` SET `password`='{$pass}' WHERE `login`='{$login}' "; $sql = mysql_query($query) or die(mysql_error()); //получаем мыло из базы для нашего пользователя $query = "SELECT `email` FROM `users` WHERE `login`='{$login}' LIMIT 1"; $sql = mysql_query($query) or die(mysql_error()); $row = mysql_fetch_assoc($sql); $mail = $row['email']; //шлём пороль на это мыло mail($mail, "Запрос на востонавление пороля", "Здравствуйте $login ваш новый пороль : $string"); } ?> А на сайте : array(1) { ["schema_name"]=> string(18) "information_schema" }
Ну во общем. Если тот вариант не работает, так можно другой код взять.Вот : PHP: <?php include_once('db.php'); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Восстановление пароля</title> </head> <body> <?php if (isset($_POST['submit'])){ $login = $_POST['login']; $email = $_POST['email']; if (empty($login)){ echo "Введите логин!"; } elseif (empty($email)){ echo "Введите e-mail!"; } else{ $resultat = mysql_query("SELECT * FROM users WHERE login = '$login' AND email = '$email'"); $array = mysql_fetch_array($resultat); if (empty($array)){ echo 'Ошибка! Такого пользователя не существует'; } elseif (mysql_num_rows($resultat) > 0){ $chars="qazxswedcvfrtgbnhyujmkiolp1234567890QAZXSWEDCVFRTGBNHYUJMKIOLP"; $max=10; $size=StrLen($chars)-1; $password=null; while($max--){ $password.=$chars[rand(0,$size)]; } $newmdPassword = md5($password); $title = 'Востановления пароля пользователю '.$login.' для сайта Site.ru!'; $headers = "Content-type: text/plain; charset=windows-1251\r\n"; $headers .= "Админестрация сайта Site.ru"; $letter = 'Вы запросили восстановление пароля для аккаунта '.$login.' на сайте Site.ru \r\nВаш новый пароль: '.$password; // Отправляем письмо if (mail($email, $title, $letter, $headers)) { mysql_query("UPDATE users SET password = '$newmdPassword' WHERE login = '$login' AND users.email = '$email'"); echo 'Новый пароль отправлен на ваш e-mail!<br><a href="index.php">Главная страница</a>'; } } } } mysql_close(); ?> <table> <form method="POST"> <tr> <td>Логин:</td> <td><input type="text" size="20" name="login" ></td> </tr> <tr> <td>E-mail:</td> <td><input type="text" size="20" name="email"></td> </tr> <tr> <td></td> <td colspan="2"><input type="submit" value="Восстановить пароль" name="submit" ></td> </tr> <br> </form> </table> </body> </html> Но тут проблема с mysql_close(); Когда захожу на страницу с восстановлением пароля, так высвечивает ошибку : Warning: mysql_close(): no MySQL-Link resource supplied in Z:\home\localhost\www\Tests\project\password.php on line 53
Всё, сумел решить. Вот так должно быть : PHP: <?php $myConnect = mysql_connect('localhost', 'root', ''); mysql_select_db('pr2', $myConnect); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Восстановление пароля</title> </head> <body> <?php if (isset($_POST['submit'])){ $login = $_POST['login']; $email = $_POST['email']; if (empty($login)){ echo "Введите логин!"; } elseif (empty($email)){ echo "Введите e-mail!"; } else{ $resultat = mysql_query("SELECT * FROM users WHERE login = '$login' AND email = '$email'"); $array = mysql_fetch_array($resultat); if (empty($array)){ echo 'Ошибка! Такого пользователя не существует'; } elseif (mysql_num_rows($resultat) > 0){ $chars="qazxswedcvfrtgbnhyujmkiolp1234567890QAZXSWEDCVFRTGBNHYUJMKIOLP"; $max=10; $size=StrLen($chars)-1; $password=null; while($max--){ $password.=$chars[rand(0,$size)]; } $newmdPassword = md5($password); $title = 'Востановления пароля пользователю '.$login.' для сайта Site.ru!'; $headers = "Content-type: text/plain; charset=windows-1251\r\n"; $headers .= "Админестрация сайта Site.ru"; $letter = 'Вы запросили восстановление пароля для аккаунта '.$login.' на сайте Site.ru \r\nВаш новый пароль: '.$password; // Отправляем письмо if (mail($email, $title, $letter, $headers)) { mysql_query("UPDATE users SET password = '$newmdPassword' WHERE login = '$login' AND users.email = '$email'"); echo 'Новый пароль отправлен на ваш e-mail!<br><a href="index.php">Главная страница</a>'; } } } } mysql_close(); ?> <table> <form method="POST"> <tr> <td>Логин:</td> <td><input type="text" size="20" name="login" ></td> </tr> <tr> <td>E-mail:</td> <td><input type="text" size="20" name="email"></td> </tr> <tr> <td></td> <td colspan="2"><input type="submit" value="Восстановить пароль" name="submit" ></td> </tr> <br> </form> </table> </body> </html> Но у меня не отправляет новый пароль на почту, Не знаю почему, кто знает, так ответьте. Могу сказать, что когда все данные правильно ввёл и нажал восстановить пароль, так сайт успешно пишет что пароль отправлен вам на почту, но на почте ничего нет.
ахаха))) первую строку написал и решил не отправлять)) потом вышел и через пол дня написал сообщение и отправил вместе с черновиком)) С локального сервера не будет работать.
А как тогда отправить ? --- Добавлено --- Я посмотрел, что в базе данных, пароль меняется, если его изменить через " Восстановления пароля ". Но на почту не приходит.
@Terminator004, если я тебе скажу, что у опенсервера/денвера стоят заглушки на отправку почты, что надо либо перенастраивать, либо использовать сторонний почтовый сервер, тебе это что-то даст? А если скажу, что функцией mail() лучше и не пользоваться, а пользоваться библиотекой phpMailer?
Я ему это всю ночь толдычил, пока спать не ушёл --- Добавлено --- Ну это ещё библиотеку устанавливать. А если он не знает где цикл заканчивается - лучше над этим, пока что, не заморачиваться.