我已经看到这个问题遍布堆栈溢出,但没有一种方法有帮助。
形式:
<form action="login.php" method="POST">
<input name="username" type="text" placeholder="User Name">
<input name="rawpassword" type="password" placeholder="Password">
<input value="Login" type="submit">
</form>
的login.php:
// Gets user entered details from form.
if (isset($_POST['username'])) {
$username=$_POST['username'];
} else {
$username=null;
}
if (isset($_POST['rawpassword'])) {
$rawpassword=$_POST['rawpassword'];
} else {
$rawpassword=null;
}
// Hashes password through SHA-1.
$password = sha1($rawpassword);
echo "$username";
echo "$rawpassword";
echo "$password";
我的问题是
if (isset($_POST['']))
返回false,将两个变量设为null,echos为null(无)。但如果我这样做:
if (!isset($_POST['']))
它返回每个人都得到的未定义的索引错误。
帮助将被大量推荐。
答案 0 :(得分:0)
if (isset($_POST['username']) && isset($_POST['submit'])) {
$username=$_POST['username'];
}
请尝试检查提交,因为用户名和其他字段并不总是设置。 我希望这是问题,因为如果没有HTML,问题就不清楚了。
答案 1 :(得分:0)
尝试在
中使用它HTML
<form action="login.php" method="POST">
<input name="username" type="text" placeholder="User Name" required>
<input name="rawpassword" type="password" placeholder="Password" required>
<input value="Login" type="submit" name="Login">
</form>
PHP
<?php
if (filter_input(INPUT_POST,'Login')==='Login') {
$username=$_POST['username'];
$rawpassword=$_POST['rawpassword'];
// Hashes password through SHA-1.
$password = sha1($rawpassword);
} else {
$username='';
$rawpassword='';
}
echo $username;
echo $rawpassword;
echo $password;
答案 2 :(得分:0)
我建议使用empty()代替isset()。因为isset()
只会检查(POST)变量是否设置而不是NULL。它不会检查它是否为空。如果有人在没有输入任何用户名或密码的情况下点击提交,您的代码仍会接受此操作。如果您使用empty()
,它还会检查用户名和密码是否都为空。由于empty()
与isset()
完全相同,但也会检查它是否为空,因此不再需要使用isset()
。
<?php
if(!empty($_POST['username'] && !empty($_POST['rawpassword'])){
$username = $_POST['username'];
$rawpassword = $_POST['rawpassword'];
// Hashes password through SHA-1.
$password = sha1($rawpassword);
} else {
$username = null;
$rawpassword = null;
}
echo $username;
echo $rawpassword;
echo $password;
?>
此外,在回显它们时,将变量放在引号内是没有必要的。
答案 3 :(得分:0)
我已经解决了我遇到的问题,显然我没有做足够的研究来发现问题是JQuerymobile(应该提到我使用的是JQuerymobile)它有它自己的特殊性请求页面的方式。
我需要做的只是将data-ajax="false"
添加到<form>
标记中,现在一切都按照我希望它的工作方式进行。
感谢大家的建议和帮助。