我要根据用户名和日期将用户重定向到网页。如果他的名字不匹配或他的身份证已过期,我需要将他送到另一页。如果他通过这两个条件,我需要将他重定向到一个网页,例如。 www.google.com
$name_value=$_GET['query'];
$fh = fopen('db.csv', 'r');
$now = date();
$data=fgetcsv($fh);
$name=$data[0];
$date=$data[1];
$url=$data[2];
if($name_value == $name)
{
if($date==$now)
{
header("Location:".$data[2]);
}
}
else
{
echo("not successful");
}
exit;
这是CSV文件内容
merch,26.06.2011,http://www.google.com
我的问题是Header没有重定向到网页。任何帮助将不胜感激。
答案 0 :(得分:4)
首先,你的警告是否开启?这不应该是默默失败。
其次,您可能是date("m.d.Y");
而不是date();
。
答案 1 :(得分:2)
date(),没有任何参数,在我的服务器上产生这个:
Warning: date() expects at least 1 parameter, 0 given in test.php on line 1
我建议您将错误报告用于测试目的:
error_reporting(E_ALL|E_STRICT);
ini_set("display_errors", "On");
要匹配CSV文件中的格式,您需要:
$now = date("d.m.Y");
答案 2 :(得分:1)
这样做的一种肮脏方式是使用Meta refresh重定向到所需的网站(但不要打败我:D)。
此外:
if($name_value == $name && $date==$now)
您不需要使用两个if语句。使用逻辑AND
绑定这两个条件。
答案 3 :(得分:1)
此csv文件中是否列出了多个用户? fgetcsv()一次只读取一行,因此对于多个用户,您必须使用循环首先找到用户所在的行,然后检查到期日期。
对于多个用户,您需要执行此操作:
$fh = fopen('db.csv', 'rb');
while(list($name, $date, $url) = fgetcsv($fh)) {
if (($name === $name_value) && ($date === $now))
header("Location: $url");
exit();
}
}
echo "not successful";
答案 4 :(得分:1)
在向用户发送任何其他内容之前,您必须指定标题位置;否则,标题不会重定向。
答案 5 :(得分:1)
您在没有任何参数的情况下致电date()
,这意味着$date
设置为false
,且只会匹配$now
也可能被视为错误的值。
返回格式化的日期字符串。如果一个 非数字值用于 时间戳,返回FALSE和 发出E_WARNING级别错误。