<?php //filename signup.php
ob_start();
include('dat.php');
if (!empty($_POST)){
if ($pass!="d41d8cd98f00b204e9800998ecf8427e" OR $user!="") { // 1
$result=mysql_query($sql);
if(mysql_error()) {
die('Sorry, this username already exists'); // 2
}
} else {
echo "Please enter the Password";
}
}
ob_end_flush();
?>
<html>
<body>
<form name="form1" method="post" action="signup.php"> <!--3-->
Username<input name="myusername" type="text" id="myusername" />
Password<input name="mypassword" type="text" id="mypassword" />
e-mail<input name="email" type="text" id="email" />
<input type="submit" name="Submit" value="Login" />
</form>
</body>
</html>
这是一个注册页面(这里缺少所有mysql的详细信息,它们都包含在dat.php中)。如果出现ny错误,则会显示在同一页面中
问题1:[// 1] OR的运算符是什么,在这种情况下,如果传递或用户为空,我已经使用了条件,但OR不能正常工作|| ,用于javascript。
问题2:[// 2]如果使用die,则语句将在新窗口中打印,但我希望它出现在同一个窗口中...我也使用echo,它工作但我觉得我失踪了'echo'的主要功能是使用'echo'
问题3:[<!--3-->
]如何将signup.php替换为SERVER_PAGE或其他类似的行为......
答案 0 :(得分:5)
OR
与||
相同,只是OR
的{{3}}低于||
。当与其他运算符一起使用时,这会导致逻辑错误,优先级高于OR
,但优先级低于||
,如赋值运算符:
$var = false OR true; // ($var = false) OR true;
var_dump($var); // bool(false)
$var = false || true; // $var = (false || true);
var_dump($var); // bool(true)
因此,我建议您使用||
而不是OR
。
precedence会打印传递的字符串并退出当前脚本的执行。就个人而言,我不会使用use die
,而是实现更好的错误处理,例如将错误消息存储在变量中并将其打印在文档中,如下所示:
$errors = array();
if (!empty($_POST)) {
if ($pass!="d41d8cd98f00b204e9800998ecf8427e" || $user!="") {
$result=mysql_query($sql);
if (mysql_error()) {
$errors[] = 'Sorry, this username already exists';
}
} else {
$errors[] = "Please enter the Password";
}
}
if (!empty($errors)) {
echo 'There were some errors:';
echo '<ul><li>', implode('</li><li>', $errors), '</li></ul>';
}
如果您对action
属性使用空网址,则会引用相同的网址:
<form name="form1" method="post" action="">
一些进一步的提示:
$_SERVER['REQUEST_METHOD'] === 'POST'
来测试请求方法,而不是测试!empty($_POST)
。die
。因此,如果您想引用POST传递的参数 pass ,请使用$_POST['pass']
代替$pass
。答案 1 :(得分:1)
将以下表单标记POST用于同一个脚本...如果您重命名该文件,它将继续工作。
<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
答案 2 :(得分:0)
问题2:死亡在被叫的地方停止死亡。找到一种方法将false返回到其他脚本并在那里死去。
问题3:不确定你想要什么。
答案 3 :(得分:0)
这是logical operator。与||
相同,但lower precedence
你是什么意思但是OR既没有工作也没有|| ?你有例外吗?结果应该是什么?语法似乎是正确的。
也许你使用了错误的逻辑表达式。它该怎么办?目前评估为true
,如果$pass
不 d41d8cd98f00b204e9800998ecf8427e
或,如果$user
不是空。
在manual中了解die()
,与exit()
相同:
输出消息并终止当前脚本
在这里使用echo
是完全有效的,因为你希望脚本继续执行。
你是什么意思?类似的东西:
<?php define('SERVER_PAGE', 'signup.php'); ?>
// later
<form name="form1" method="post" action="<?php echo SERVER_PAGE ?>">
答案 4 :(得分:0)
第一个和第二个:正如Gumbo所说的
回答第三个问题:
3。<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
@ Mikey1980:谢谢!