PHP - неверные данные POST отправляются через форму при эхо? - PullRequest
1 голос
/ 30 июля 2011

Я пишу простую регистрационную форму для добавления пользователей в базу данных.Код ниже.

<?php
include 'header.php';
$tag = randomString();
?>
<html>
<head>
<title>Register an Account</title>
</head>
<body>
<b>Register an account</b><br><br>
<form method="post" action="add_user.php?tag=<?echo $tag;?>">
Username: <br><input type="text" name="username" size=25/><br /><br>
Password: <br><input type="password" name="password" size=25/><br /><br>
Confirm Password: <br><input type="password" name="confirm" size=25/><br /><br>
Email Address: <br><input type="text" name="email" size=25/><br /><br><br>
Additional Info: <br><input type="text" name="info" size=50/><br>
<input type="submit" name="Submit" />
</form>
</body>
</html>

Форма работает нормально.Тем не менее, когда я пытаюсь прочитать данные этого поста на следующей странице, некоторые записи верны, а другие нет, даже если все записи заполнены.Например:

echo mysql_real_escape_string(htmlentities($_POST['username'])); --> outputs what was in the info field
echo mysql_real_escape_string(htmlentities($_POST['password'])); --> output is what was entered in "confirm"
echo mysql_real_escape_string(htmlentities($_POST['confirm'])); --> no output
echo mysql_real_escape_string(htmlentities($_POST['email'])); --> email is outputted, this is correct. 
echo mysql_real_escape_string(htmlentities($_POST['info'])); --> No output. 

Я очень озадачен тем, почему это происходит, я написал много форм без таких проблем.

РЕДАКТИРОВАТЬ: Вот var_dump (данные введены: username, Pass1, Pass2, email@address.com и информация в правильном порядке):

array(4) { ["username"]=> string(4) "info" ["password"]=> string(5) "Pass2" ["email"]=> string(17)     "email@address.com" ["Submit"]=> string(6) "Submit" }

EDIT2: добавлен код всей страницы

add_user.php (не завершено- проблема возникла, когда я пытался сравнить два пароля. Это никогда не оценивалось как истинное, главным образом потому, что я не сравнивал то, что я думал, что я был)

<?php
//var_dump($_POST);

echo mysql_real_escape_string(htmlentities($_POST['username'])); echo "<br>";
echo mysql_real_escape_string(htmlentities($_POST['password'])); echo "<br>";
echo mysql_real_escape_string(htmlentities($_POST['confirm'])); echo "<br>";
echo mysql_real_escape_string(htmlentities($_POST['email'])); echo "<br>";
echo mysql_real_escape_string(htmlentities($_POST['info'])); echo "<br>";

if ($_POST['password'] != $_POST['confirm']) {
die("Passwords do not match. Please go back and try again.");
}
$tag = $_GET['tag'];
?>

1 Ответ

0 голосов
/ 30 июля 2011

При этом $ _POST вовсе не является значениями «подтвердить» и «информация». Вот почему они ничего не выводят.

Я предлагаю включить уведомления PHP, они скажут это мгновенно.

Я не могу думать, но вы неправильно заполнили форму. Поскольку «info» является значением «username».

...