2013-05-17 59 views
0

如果登录输入不正确,我将用户重定向到登录页面。重定向时POST变量到另一个页面 - php

$sql = "select * from Driver where username=$username and pwd=$pwd"; 
$driver = mysql_query($sql); 

if(!$driver){ 
    header("Location: http://domain.de/login.php"); 
    exit(); 
} 

我是否也可以将类似"sorry, username isnot correct"的消息传递给登录页面?

我不想使用会话。得到状态并没有在这里

+2

urlencode $ message – Kevin

+0

@Kevin,怎么样?你能说更多的话吗? – doniyor

+0

http://php.net/manual/en/function.urlencode.php应该可以帮到你。将它附加到URL时。确保在另一端使用urldecode()。 – Kevin

回答

1

的选项,你可以不喜欢它

header("Location: http://domain.de/login.php?error=username"); 

和做其他的页面上

if ($_GET['error'] == 'username') { 
    echo 'Sorry, username is not correct!'; 
} 

编辑: 当心SQL注入也

+0

谢谢工作。我怎样才能做到这一点与POST? – doniyor

+0

你为什么要这个? –

+0

简单:我有很大的消息,我不想把它放到网址 – doniyor

1

您可以添加获取参数到位置标题或保存会话中的消息标志。就像这样:

$sql = "select * from Driver where username=$username and pwd=$pwd"; 
$driver = mysql_query($sql); 

if(!$driver){ 
    header("Location: http://domain.de/login.php?wasredirect=1"); 
    exit(); 
} 

//////// In login.php 

if (isset($_GET['wasredirect'])) { 
    echo "sorry, username isnot correct"; 
} 

或者这样:

 $sql = "select * from Driver where username=$username and pwd=$pwd"; 
$driver = mysql_query($sql); 

if(!$driver){ 
    header("Location: http://domain.de/login.php"); 
    if (!isset($_SESSION)) { 
     session_start(); 
    } 
    $_SESSION['redirect'] = true; 
    exit(); 
} 

//////// In login.php 

if (!isset($_SESSION)) { 
    session_start(); 
} 
$_SESSION['redirect'] = true; 
if (isset($_SESSION['redirect']) &&$_SESSION['redirect']) { 
    echo "sorry, username isnot correct"; 
    unset($_SESSION['redirect']); 
} 
+0

我不想保存到会话中。这只是一个2秒的消息,它不需要保存到会话 – doniyor

+0

你可以在“使用”之后删除会话中的值,例如,或者添加获取参数 – Eugene

1

对于简单地放弃了一个消息,你可以将它添加到URL。

header("Location: http://domain.de/login.php?e=1234"); 

为了获得更好的灵活性,我建议使用错误代码而不是全长消息。

请注意,如何做到这一点需要实现MVC模式,然后在内部加载错误页面的路由。但是对于一个小脚本来说这可能太多了。

我知道你不会反馈给你的查询。无需担心,除非您对SQL注入的含义毫无头绪。

最佳方面

索尔特

-3

查询更改为:

$sql = "select * from `Driver` where `username`='$username' and `pwd`='$pwd'"; 

注意反引号和单引号

+0

这不是问题,我的查询很好 – doniyor

+0

字符串SQL查询哪些不在引号可以使问题 – SAVAFA

+0

在什么意义上的问题? – doniyor

1

我认为最好的解决方案是加载页面的login.php作为当前脚本(控制器)的一部分(视图),并使用消息的值设置变量。类似于:

if(!$driver){ 
$message = "Sorry, username isnot correct"; 
} 
else { 
$message = "Whatever"; 
} 
include('login.php'); 

$ login.php脚本中将提供您的消息。

+0

我没有明白你的意思。在哪里加载?我没有使用MVC btw – doniyor

相关问题