Форум программистов, компьютерный форум, киберфорум
Наши страницы

PHP: базы данных

Войти
Регистрация
Восстановить пароль
 
Terminator004
1 / 1 / 0
Регистрация: 14.09.2016
Сообщений: 143
#1

Ошибка mysql_close() - PHP БД

25.01.2017, 17:11. Просмотров 226. Ответов 14
Метки нет (Все метки)

Здравствуйте, я создаю страницу с восстановлением пароля. Но у меня возникли проблемы. Вот, смотрите мой код:

Тут страница с восстановлением пароля.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?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>
Тут страница с подключением к базе данных.
PHP
1
2
3
4
5
6
<?php 
require "libs/rb.php";
 
R::setup( 'mysql:host=localhost;dbname=pr2',
        'root', '' );
?>
Ну так вот, и ошибку выдаёт в 53 строке, где находиться mysql_close()
Вот что в сайте пишет:
Warning: mysql_close(): no MySQL-Link resource supplied in Z:\home\localhost\www\Tests\project\password.php on line 53
Не знаю в чем проблема? Надеюсь вы поможете мне. Спасибо.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2017, 17:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка mysql_close() (PHP БД):

О mysql_connect() и неизбежном mysql_close() - PHP БД
Возможно слегка глупый вопрос, но всё же. Читал где-то, что надо всегда закрывать соединение с базой. Не оставлять базу открытую. Так...

Warning: mysql_close() expects parameter 1 to be resource, boolean given - PHP БД
залил сайт, подключил бд. Но когда захожу на сайт ошибка: Warning: mysql_close() expects parameter 1 to be resource, boolean given in...

предупреждение mysql_close() expects parameter 1 to be resource - PHP
всем привет, вот первый раз удачно написал скрипт регистрации (очень рад этому, первый опыт так скажем:)) ну вот только смс-ка вылазит вот...

IIS- asp ошибка: HTTP 500.100 - Внутренняя ошибка сервера - ошибка ASP Internet Information Services - C# ASP.NET
Привет! Конфигурация win2000pro sp2, стандартный IIS, IE 5. При попытке обратиться к сценарию(asp) получаю ошибку: &lt;пропуск&gt; ......

1C 8.x Ошибка при чтении изменений при обмене РИБ: Ошибка при вызове метода контекста (ПрочитатьИзменения): Ошибка записи! - 1С
Доброго всем времени суток! подскажи пожалуйста как исправить ошибку: Ошибка при чтении изменений при обмене РИБ: Ошибка при вызове...

Ошибка при добавлении в файл. Ошибка 101: Ошибка записи на диск (Error 101: Disk write error). - Turbo Pascal
Здравствуйте, возникла проблема такого плана. Нужно произвести добавление записи в файл, но после успешного создания и чтения вылазиет...

14
crautcher
2007 / 1978 / 172
Регистрация: 27.05.2011
Сообщений: 6,820
25.01.2017, 17:16 #2
Цитата Сообщение от Terminator004 Посмотреть сообщение
Не знаю в чем проблема?
Ты уверен, что твой libs/rb.php вообще mysql использует, а не PDO например?
1
Terminator004
1 / 1 / 0
Регистрация: 14.09.2016
Сообщений: 143
25.01.2017, 17:20  [ТС] #3
Да, потому что у меня на сайте есть регистрация и авторизация и они вс работают, а значит и база работает.
0
crautcher
2007 / 1978 / 172
Регистрация: 27.05.2011
Сообщений: 6,820
25.01.2017, 17:23 #4
Цитата Сообщение от Terminator004 Посмотреть сообщение
Да, потому что у меня на сайте есть регистрация и авторизация и они вс работают
И они в своем коде используют именно mysql, а не mysqli или PDO?
1
Terminator004
1 / 1 / 0
Регистрация: 14.09.2016
Сообщений: 143
25.01.2017, 17:27  [ТС] #5
Цитата Сообщение от crautcher Посмотреть сообщение
И они в своем коде используют именно mysql, а не mysqli или PDO?
ну вот, допустим код регистрации.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?php
 session_start();
require "db.php";
 
$data = $_POST;
if( isset($data['do_signup']))
{
    // здесь регистрируем
    
    $errors = array();
    if( trim($data['login']) == '' )
    {
        $errors[] = 'Введите логин!';
    }
 
    if( trim($data['email']) == '' )
    {
        $errors[] = 'Введите почту!';
    }
 
    if( ($data['password']) == '' )
    {
        $errors[] = 'Введите пароль!';
    }
    
    if( $data['password_2'] != $data['password'] )
    {
        $errors[] = 'Повторный пароль, введён не верно!';
    }
    
    if(R::count('users', "Login = ?", array($data['login'])) > 0 )
    {
        $errors[] = 'Пользователь с таким логином уже зарегестрированый';
    }
    
    if(R::count('users', "email = ?", array($data['email'])) > 0 )
    {
        $errors[] = 'Пользователь с такой почтой уже зарегестрированый';
    }
    if( empty($errors) )
    {
        // всё хорошо, регистрируем
        $user = R::dispense('users');
        $user->login = $data['login'];
        $user->email = $data['email'];
        $user->password = md5($data['password']);
        R::store($user);
        echo '<div style="color: green;"> Вы успешно зарегестрировались!</div>';
        echo '<div style="color: green;">Можете перейти на <a href="index.php">Главную</a> Страницу';
        
    }else
    {
        echo '<div style="color: red;">'.array_shift($errors).'</div><hr>';
    }
    
}
 
?>
 
<form action="signup.php" method="POST">
 
<p>
    <p><strong>Логин</strong>:</p>
    <input type="text" name="login" value="<?php echo @$data['login']; ?>">
</p>    
 
<p>
    <p><strong>Почта</strong>:</p>
    <input type="email" name="email" value="<?php echo @$data['email']; ?>">
</p>    
 
<p>
    <p><strong>Пароль</strong>:</p>
    <input type="password" name="password" value="<?php echo @$data['password']; ?>">
</p>    
 
<p>
    <p><strong>Повторите пароль</strong>:</p>
    <input type="password" name="password_2" value="<?php echo @$data['password_2']; ?>">
</p>    
 
<p>
    <button type="submit" name="do_signup">Зарегистрироваться</button>
</p>
 
</form>
Тут код логина.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php 
session_start();
require "db.php";
 
$data = $_POST;
if( isset($data['do_login']))
{
    $errors = array();
    $user = R::findOne('users', 'login = ?', array($data['login']));
    if( $user )
    {
        // логин существует
        if ( md5($data['password']) == $user->password) {
            // всё хорошо, логиним пользователя
            $_SESSION['logged_user'] = $user;
      
        } else
        {
            $errors[] = 'Неверный пароль!';
        }
    } else
    {
        $errors[] = 'Пользователь с таким логином не найден!';
    }
    
    if( ! empty($errors))
    {
        echo '<div style="color: red;">'.array_shift($errors).'</div><hr>';
    }
}
 
?>
 
<?php if( isset($_SESSION['logged_user'])) : ?>
    Подключён!<br>
    Здравствуйте, <?php echo $_SESSION['logged_user']->login; ?>!
    <hr>
    <a href="logout.php">Отключиться</a>
    <?php else : ?>
<a href="index.php"></a><br>
<?php endif; ?>
0
crautcher
2007 / 1978 / 172
Регистрация: 27.05.2011
Сообщений: 6,820
25.01.2017, 17:39 #6
Ну, никаких тебе mysql_close или mysql_query... Все через R:: . Изучай его или ( откажись и пиши коннект для нативного mysql ).
1
Terminator004
1 / 1 / 0
Регистрация: 14.09.2016
Сообщений: 143
25.01.2017, 17:50  [ТС] #7
Цитата Сообщение от crautcher Посмотреть сообщение
Ну, никаких тебе mysql_close или mysql_query... Все через R:: . Изучай его или ( откажись и пиши коннект для нативного mysql ).
А что, команды не какие не заменишь в том коде с восстановлением пароля ?
0
crautcher
2007 / 1978 / 172
Регистрация: 27.05.2011
Сообщений: 6,820
25.01.2017, 17:56 #8
Восстановление пароля не работает. Все остальное работает. В чем разница? В том, что в НЕ рабочем коде юзается mysql, а в рабочем R::

Добавлено через 1 минуту
Цитата Сообщение от Terminator004 Посмотреть сообщение
PHP
1
R::setup
Нельзя завести мотор на авмотобиле R, затем пересесть на автомобил mysql с незапущенным мотором и спрасивать, чего он не едет? Либо езжай дальше на уже запущенном R, либо запускай еще и mysql
1
Terminator004
1 / 1 / 0
Регистрация: 14.09.2016
Сообщений: 143
25.01.2017, 17:57  [ТС] #9
Цитата Сообщение от crautcher Посмотреть сообщение
Восстановление пароля не работает. Все остальное работает. В чем разница? В том, что в НЕ рабочем коде юзается mysql, а в рабочем R::
Да, я понял уже. А что надо заменить в коде восстановления пароля, чтоб работало и там?
0
crautcher
2007 / 1978 / 172
Регистрация: 27.05.2011
Сообщений: 6,820
25.01.2017, 17:58 #10
Цитата Сообщение от Terminator004 Посмотреть сообщение
А что надо заменить в коде восстановления пароля, чтоб работало и там?
mysql_connect сделать, а свой db.php выкинуть (именно в этом коде)
1
Terminator004
1 / 1 / 0
Регистрация: 14.09.2016
Сообщений: 143
25.01.2017, 18:20  [ТС] #11
Цитата Сообщение от crautcher Посмотреть сообщение
mysql_connect сделать, а свой db.php выкинуть (именно в этом коде)
Мне кажется, что я сумел починить !!!!!!!!!!!!!!! Вот смотри мой код, надеюсь всё правильно (по крайне мере ошибки при в ходе на сайт с восстановлением пароля больше нет! )
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?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>
Но, есть еще одно ошибка. Я пишу данные. Ну например я в те поля где логин и почта, ничего не введу, так мне сайт говорит что " Введите логин! " Ну это всё хорошо. Если я введу логин, но не введу почту, так сайт говорит " Введите e-mail! " Это тоже хорошо. Но, если я введу логин и почту (даже не важно правильный логин или нет) так мне выдаёт ошибку:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:\home\localhost\www\Tests\project\password.php on line 27
Ошибка! Такого пользователя не существует

Хоть пользователя я ввёл правильно, ну и почту конечно же.Так в чём теперь ошибка ?
0
crautcher
2007 / 1978 / 172
Регистрация: 27.05.2011
Сообщений: 6,820
25.01.2017, 18:25 #12
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Terminator004 Посмотреть сообщение
R::setup( 'mysql:host=localhost;dbname=pr2', 'root', '' );
Цитата Сообщение от Terminator004 Посмотреть сообщение
PHP
1
2
$myConnect = mysql_connect($localhost,$root); 
mysql_select_db($pr2,$myConnect);

PHP
1
2
$myConnect = mysql_connect('localhost', 'root', ''); 
mysql_select_db('pr2', $myConnect);
1
Terminator004
1 / 1 / 0
Регистрация: 14.09.2016
Сообщений: 143
25.01.2017, 18:43  [ТС] #13
Цитата Сообщение от crautcher Посмотреть сообщение
$myConnect = mysql_connect('localhost', 'root', '');
mysql_select_db('pr2', $myConnect);
АФИГЕТЬ РАБОТАЕТ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! СПАСИБО БОЛЬШОЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕ !!!!!! ТЫ САМЫЙ ЛУЧШИЙ ПРОГРАММИСТ !!!!!!!! СПАСИБО !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! АДМИНЫ, ДАЙТЕ ЕМУ ПРИЗ, ОН КЛАССНЫЙ !!!!!!!!!

Добавлено через 2 минуты
Я тебе под каждым ответом спасибо поставил Это тебе подарок от меня

Добавлено через 11 минут
Цитата Сообщение от crautcher Посмотреть сообщение
$myConnect = mysql_connect('localhost', 'root', '');
mysql_select_db('pr2', $myConnect);
Так, у меня еще вопросик. Почему на почту не приходит новый пароль?
0
crautcher
2007 / 1978 / 172
Регистрация: 27.05.2011
Сообщений: 6,820
25.01.2017, 18:48 #14
"Новый пароль отправлен на ваш e-mail" выводится?
0
Terminator004
1 / 1 / 0
Регистрация: 14.09.2016
Сообщений: 143
25.01.2017, 23:38  [ТС] #15
Цитата Сообщение от crautcher Посмотреть сообщение
"Новый пароль отправлен на ваш e-mail" выводится?
Да, сайте пишет :
Новый пароль отправлен на ваш e-mail!
Главная страница

Но на почту ничего не приходит.

Добавлено через 4 часа 44 минуты
Выяснил, что денвер не разрешает отправлять письма. Как это настроить или исправить я не знаю.
0
25.01.2017, 23:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2017, 23:38
Привет! Вот еще темы с ответами:

Interbase Ошибка SQL запроса , в базе работает, а через IBQuery в Delphi ошибка - Delphi БД
В Combobox загружены имена организаций. Нужно выполнить запрос на вывод всех полей таблицы организаций при выборе имени в Combobox. При...

ASP: Response.Redirect - не работает, ошибка `500 - Внутренняя ошибка сервера' - C# ASP.NET
Всем привет! Есть в ASP-сраничке такой код: Response.Redirect 'page1.asp?ReturnTo=page2.asp' Эта конструкция работала на IIS 4,...

Django Ошибка доступа (403) Ошибка проверки CSRF. Запрос отклонён - Python
На хостинге разместил сайт и не могу войти в админку, т.к. возникает 403 ошибка &quot;Ошибка доступа (403). Ошибка проверки CSRF. Запрос...

Ошибка HTTP 500 - внутреняя ошибка сервера при отправке почты. - C# ASP.NET
Я пытаюсь отправить почту и присоединяю к ней письма Вот часть страницы Dim myMail Set myMail = CreateObject('CDONTS.NewMail') ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru