У меня есть форма, в которой пользователь вводит информацию о своей базе данных и может щелкнуть ссылку, которая использует AJAX для отправки учетных данных на эту страницу. Проблема заключается в том, что до тех пор, пока они вводят правильное имя хоста, скрипт возвращает TRUE
.
Есть ли другой способ проверить это, чтобы он вернул FALSE
если имя пользователя и пароль недействительны?
$h = urldecode($_GET['h']); $u = urldecode($_GET['u']); $p = urldecode($_GET['p']); $con = mysql_connect($h, $u, $p); if(!$con){ echo 'Could not connect'; } else{ echo 'Connected'; }
Для дальнейшего использования проблема заключалась в том, что там, где записи в таблице пользовательских mysql для пользователя = «Any». Я удалил этих пользователей, и скрипт работал должным образом. Я обновил это сообщение, чтобы включить скриншот для тех, у кого есть подобные проблемы. Спасибо Фабио ниже за предложение!
Это связано с тем, что mysql_connect использует некоторые значения по умолчанию при подключении, которые должны быть root
для имени пользователя и пустой строки для пароля, если я правильно его помню. Альтернативно может быть имя пользователя, под которым работает веб-сервер.
Это может означать, что ваш сервер db принимает корневые соединения без пароля (с сервера веб-сервера), что довольно опасно. Вы должны просмотреть конфигурацию своей базы данных и список пользователей.
С точки зрения безопасности ваш код не очень безопасен, учетные данные db передаются в cleartext, и как правило, db учетные данные не должны вводиться конечными пользователями (если вы не пишете инструмент PhpMyAdmin).