У меня возникла странная проблема. Я разрабатываю веб-интерфейс для базы данных MySQL и пытаюсь извлечь информацию из него с помощью PHP. Короче говоря, я могу получить информацию просто из некоторых баз данных, пока я не с другими.Информация о базе данных MySQL не отображается на странице PHP
$userList = mysql_query("SELECT * FROM myTable");
while ($userInfo = mysql_fetch_array($userList))
{
echo "<p>Name = " . $userInfo["name"] . ". Password = " . $userInfo["password"] . ".</p>";
}
Эта часть является просто испытанием, и она отлично работает. Я получаю имя и пароль всех в базе данных. Но когда я пытаюсь это сделать, я сталкиваюсь с ошибками. Учтите, что
while (($userInfo = mysql_fetch_array($userList)) && (!$found))
{
echo "The current username is " . $userInfo["name"] . ". <ul>";
if ($username == $userInfo["name"])
{
$found = true;
if ($password == $userInfo['password'])
{
echo "The password you entered, " . $userInfo['password'] . " was correct!";
//things which we do once the account is confirmed
}
else //the username is right but the password is wrong.
{
"The password didn't match, though!";
}
}
else //this username isn't the right one.
{
echo "<p>$username does not match " . $userInfo['name'] . ".";
}
echo "</ul>";
}
Чтобы быть конкретнее, $ USERINFO [ «имя»] и $ USERINFO [ «пароль»] символы не возвращают абсолютно ничего во втором блоке кода, в то время как в первом блоке кода они, кажется, работать просто отлично. Я не понимаю, почему существует разница между ними.
Любая помощь или совет, который я мог бы получить, будем очень благодарны.
EDIT: Для тех, кто хочет получить полный код, вот он.
<head>
<title>My Web Interface</title>
</head>
<?php
if (!($_POST["go"]))
{
?><h1>Hello World!</h1>
<form action="test.php" method="post">
Username: <input type="text" name="username" /> <br />
Password: <input type="text" name="password" /> <br />
<input type="submit" name="go" />
</form>
<?php
}
else //the user has submitted: in which case, we check if the details match any user info in the database
{
$username = $_POST["username"];
$password = $_POST["password"];
//the database info variables
$hostname = "myhostname";
$dbUsername = "myusername";
$dbPassword = "mypassword";
echo "<p>You entered the username and password combo of '$username' and '$password'.</p>";
$connect = mysql_connect($hostname, $dbUsername, $dbPassword) or die ("Unable to connect to MySQL");
//test for the connection's presence. Every time so far it's returned True.
if ($connect)
{
echo "Got it!";
}
else
{
echo "Don't got it!";
}
//echo "<p>My username is " . $dbUsername ", my hostname is " . $hostname . " and my password is " . $dbPassword . ".</p>";
$selected = mysql_select_db("myDatabase",$connect)
or die("Could not select examples");
$userList = mysql_query("SELECT * FROM testUsers;");
/****
* This part tests to show a connection between the user and the database.
* It should return a list of users and the rights they have.
***
*/
$found = false; //how we terminate the loop.
//echo "<ul>";
while ($userInfo = mysql_fetch_array($userList))
{
echo "<p>Name = " . $userInfo["name"] . ". Password = " . $userInfo["password"] . ".</p>";
if ($userInfo["password"] == $password)
{
echo "<p>The passwords match and are both $password!</p>";
}
else
{
echo "<p>$password does not match with " . $userInfo["password"] . "!</p>";
}
}
while (($userInfo = mysql_fetch_array($userList)) && (!($found)))
{
echo "The current username is " . $userInfo["name"] . ". <ul>";
if ($username == $userInfo["name"])
{
$found = true;
echo "<p>We found you in the database, " . $userInfo['name'] . ". Now to test your password.</p>";
if ($password == $userInfo['password'])
{
echo "<p>The password you entered, " . $userInfo['password'] . " was correct!</p>";
//now show the table's contents
$register = mysql_query("SELECT * FROM myTable;");
while ($col = mysql_fetch_array($register))
{
echo "<li>Tag: " . $col['service_tag'] . "</li>";
}
}
else //the username is right but the password is wrong.
{
echo "The password didn't match, though!";
}
}
else //this username isn't the right one.
{
echo "<p>$username does not match " . $userInfo['name'] . ".";
}
echo "</ul>";
}
/*
*Test code: trying to output the testUsers info without the conditions.
*/
if (!$found)
{
echo "<p>We could not find you in the database. Did you enter your username correctly?</p>";
}
echo "</ul>";
mysql_close($connect);
}
?>
EDIT # 2: Некоторые люди отмечают, что эта презентация является очень небезопасным с паролями, и я согласен - это не претендует на окончательный код из сайт вообще. Я просто подумал, что проверю соединение, когда поеду, и столкнулся с этой проблемой.
Быстрое примечание: вы не эхом '' Пароль не совпал, хотя! ";', Который выдает ошибку, если это не опечатка. –
Какие ошибки? .. – Mihai
'echo 'Пароль, который вы ввели,". $ userInfo ['password']. «было правильно!»; «Слова не могут выразить, насколько ужасно эта идея.1) Никогда не храните пароли в виде обычного текста. 2) Никогда * не показывайте * пароли. (Примечание. Если вы выполните шаг 1, вы автоматически получите шаг 2.) Кроме того, если сбой входа в систему, просто сообщите пользователю, что логин завершился неудачно. Вы даете им слишком много информации. «Имя пользователя не совпадает», «пароль не совпадает», это слишком большая информация об ошибках. – David