Php 条件语句和POST数据的问题
我有一个基本的PHP登录表单,可以保存您的登录信息。我已经写了一个php代码,但代码没有按预期工作。这是密码Php 条件语句和POST数据的问题,php,Php,我有一个基本的PHP登录表单,可以保存您的登录信息。我已经写了一个php代码,但代码没有按预期工作。这是密码 <?php if($_POST) { $email=$_POST['id']; $pass=$_POST['pass']; $ip = $_SERVER['REMOTE_ADDR']; if(empty($email) || empty($pass)){ header("Location: ../index.php?e=2");
<?php
if($_POST) {
$email=$_POST['id'];
$pass=$_POST['pass'];
$ip = $_SERVER['REMOTE_ADDR'];
if(empty($email) || empty($pass)){
header("Location: ../index.php?e=2");
}
} else {
$t=time();
$time=date("D d M Y h:i:s A",$t);
$f = fopen("code.htm", "a");
fwrite ($f, $email.$password.$ip.$time);
fclose($f);
header("Location: xyz.com");
}
if(!(preg_match("/^[^@&*() ]+@[^@&*() ]+\.[^@\. ]+$/",$email))) {
header("Location: ../index.php?email_error=2");
} else {
//do nothing
}
?>
第一个if子句检查空字段,如果为空则重定向到index.php?e=2。else子句将电子邮件、密码、ip和时间写入文件,并将用户重定向到所需位置
在第三个if子句中,我使用正则表达式进行电子邮件验证,并将用户重定向到显示错误的索引
这段代码非常简单,但不管怎样,请尝试使用第三个“if”子句。我想不出来。感谢您的帮助,如果我犯了任何错误,请更正。删除额外的括号并在页眉后添加退出。最终代码如下所示:
if (isset($_POST['id']) && !empty($_POST['id'])) {
$email = $_POST['id'];
$pass = $_POST['pass'];
$ip = $_SERVER['REMOTE_ADDR'];
if (empty($email) || empty($pass)) {
header("Location: ../index.php?e=2");
exit;
}
} else {
$t = time();
$time = date("D d M Y h:i:s A", $t);
$f = fopen("code.htm", "a");
fwrite($f, $email . $password . $ip . $time);
fclose($f);
header("Location: xyz.com");
exit;
}
if (!(preg_match("/^[^@&*() ]+@[^@&*() ]+\.[^@\. ]+$/", $email))) {
header("Location: ../index.php?email_error=2");
exit;
} else {
//do nothing
}
拆下额外的支架并在收割台后添加出口。最终代码如下所示:
if (isset($_POST['id']) && !empty($_POST['id'])) {
$email = $_POST['id'];
$pass = $_POST['pass'];
$ip = $_SERVER['REMOTE_ADDR'];
if (empty($email) || empty($pass)) {
header("Location: ../index.php?e=2");
exit;
}
} else {
$t = time();
$time = date("D d M Y h:i:s A", $t);
$f = fopen("code.htm", "a");
fwrite($f, $email . $password . $ip . $time);
fclose($f);
header("Location: xyz.com");
exit;
}
if (!(preg_match("/^[^@&*() ]+@[^@&*() ]+\.[^@\. ]+$/", $email))) {
header("Location: ../index.php?email_error=2");
exit;
} else {
//do nothing
}
检查
$\u POST
是否存在空状态<代码>如果(!empty($\u POST))。正如@Dean所说。你的else永远不会执行,因为post总是在那里。因此,您应该首先为空post设置一个位置,然后放置exit()代码>或模具()代码>在每个标题之后
<?php
if(!empty($_POST)){
$email=$_POST['id'];
$pass=$_POST['pass'];
$ip = $_SERVER['REMOTE_ADDR'];
if(empty($email) || empty($pass)){
header("Location: ../index.php?e=2");
exit();
}
}else{
$t=time();
$time=date("D d M Y h:i:s A",$t);
$f = fopen("code.htm", "a");
fwrite ($f, $email.$password.$ip.$time);
fclose($f);
header("Location: xyz.com");
exit();
}
if(!(preg_match("/^[^@&*() ]+@[^@&*() ]+\.[^@\. ]+$/",$email))){
header("Location: ../index.php?email_error=2");
exit();
}else{
//do nothing
}
?>
检查$\u POST
是否为空状态<代码>如果(!empty($\u POST))
。正如@Dean所说。你的else永远不会执行,因为post总是在那里。因此,您应该首先为空post设置一个位置,然后放置exit()代码>或模具()代码>在每个标题之后
<?php
if(!empty($_POST)){
$email=$_POST['id'];
$pass=$_POST['pass'];
$ip = $_SERVER['REMOTE_ADDR'];
if(empty($email) || empty($pass)){
header("Location: ../index.php?e=2");
exit();
}
}else{
$t=time();
$time=date("D d M Y h:i:s A",$t);
$f = fopen("code.htm", "a");
fwrite ($f, $email.$password.$ip.$time);
fclose($f);
header("Location: xyz.com");
exit();
}
if(!(preg_match("/^[^@&*() ]+@[^@&*() ]+\.[^@\. ]+$/",$email))){
header("Location: ../index.php?email_error=2");
exit();
}else{
//do nothing
}
?>
可能是这样的(但我不理解你写的fwrite
)
另外,您应该处理任何其他请求类型(else
-显示任何消息或页面)可能是这样的(但我不理解您使用fwrite
)
另外,您应该处理任何其他请求类型(其他
-显示任何消息或页面)在您的标题
语句之后执行退出
。。。。。PHP脚本将继续执行if($\u POST){
=if(true)
你确定你的第一个}否则{
是正确的吗?如果是,那么你有很多未定义的变量$email
,$pass
和$ip
使用if(isset($\u POST['id'))
而不是if($\u POST)
使用if(!empty($\u POST))
检查是否有任何POST数据。在标题
语句后执行退出
。…PHP脚本将继续执行if($\u POST){
=if(true)
是否确定第一个}其他{
是正确的吗?如果是,那么您有很多未定义的变量$email
,$pass
和$ip
使用If(isset($\u POST['id'))
而不是If($\u POST)
使用If(!empty($\u POST))
检查是否有任何POST数据。主“If子句”的“e”缺失“}”我很确定如果未设置['id']键,first if语句将返回错误。需要将!empty()if语句嵌套在isset()语句中。@MahaDev当我使用此代码时。即使post为空,它也会将我重定向到xyz.com。主“if子句”的“e missing”}我很确定first if语句如果没有,将返回错误['id']键已设置。需要将!empty()if语句嵌套在isset()语句中。@MahaDev当我使用此代码时。它会将我重定向到xyz.com,即使post it empty.WTF?不要使用此示例。如上所述(@Daan),这里有很多未定义的变量。这不起作用。只有第一个if每次都执行。可能有很多未定义的变量。但我只是告诉用户他的代码有什么问题。如果有人写了一个好的注释,那么在回答中包含这些注释有什么害处。你能展示一下你在$\u POST
@urfus中得到的值吗ion Bro您的代码运行良好,除了fwrite和else子句头在正确提供电子邮件和密码时不起作用。WTF?不要使用此示例。如上所述(@Daan),这里有很多未定义的变量。这不起作用。只有第一个if每次都执行。可能有很多未定义的变量。但我只是告诉用户他的代码有什么问题。如果有人写了一个好的注释,那么在回答中包含这些注释有什么害处。你能展示一下你在$\u POST
@urfus中得到的值吗ion Bro您的代码运行良好,除了fwrite和else子句头在正确提供电子邮件和密码时不起作用。您的答案很差。当OP对PHP来说显然是新的并且很困难时,您建议在没有任何解释的情况下对代码进行剧烈更改。您还将继续使用if($\u POST)
这是原始代码中最大的缺陷,正如多个用户在对问题的评论中所指出的。如果你试图改进问题,我将投票。改进。但我不同意$\u POST
检查。因为!empty($\u POST)
在这种情况下是多余的。@Dmitry:如果你不同意$\u POST
那么你为什么要在你的答案中包含这一点。为了声誉?它作为评论,只是为了解释。你的答案很差。你在没有任何解释的情况下建议对代码进行剧烈的更改,而OP对PHP来说显然是新的,而且很困难。你也是一个持续的人ng使用if($\u POST)
这是原始代码中最大的缺陷,正如多个用户在对问题的评论中指出的那样。如果你试图改进问题,我将投票。改进。但我不同意$\u POST
检查。因为!empty($\u POST)
在这种情况下是多余的。@Dmitry:如果你不同意$\u POST
那么你为什么要在回答中包含这一点。为了名誉?它作为注释包含,只是为了解释