【问题标题】:Passing Critera to PHP将条件传递给 PHP
【发布时间】:2011-11-05 16:39:03
【问题描述】:

我正在创建一个网站,用户可以在其中创建一个帐户然后登录。登录后,用户应该能够更改他们注册的信息。

当用户登录时,他们的用户名会在如下 URL 中传递:

header("Location: loggedon.php?$username");

现在,在我的 loggedon.php 页面上,我添加了以下内容:

<?php
$username = $_GET["username"];
$query="SELECT * FROM customer WHERE username=['$username']"; 
$result = mysql_query ($query) or die ("error in query"); 

while ($row = mysql_fetch_array($result)) 
{ 
// Print one row of results 
print "<tr>" . 
"<td>" . $row["CustomerID"] . "</td>" . 
"<td>" . $row["Firstnames"] . "</td>" . 
"<td>" . $row["Surname"] . "</td>" . 
"<td>" . $row["Username"] . "</td>" . 
"<td>" . $row["Email"] . "</td>" .
"<td>" . $row["Password"] . "</td>" .
//print a change/delete link at the end of each row
                "<td><a href=customerChangeDelete.php?id=".$row['CustomerID'].">Change/Delete</a></td>";                    
print "</tr>"; 
} 
// Then, finish the table
print "</table>";
}
?>

当我运行页面并登录时,我收到以下错误:

注意:未定义索引:第 60 行 J:\xampp\htdocs\loggedon.php 中的用户名

查询错误

我想我在尝试从 URL (?) 中提取用户名时犯了某种错误。如果有人可以请给我一个正确的方向推动,这将是惊人的。谢谢。

【问题讨论】:

  • 我不知道您的应用程序是什么样的,但也许您想考虑一些与安全相关的事情。 GET 和 POST 参数非常不安全,因为用户可以操纵它。有人可能会调用 loggedon.php?username=administrator 并看到他不应该看到的东西。也许您发布了一个简化的示例,但如果用户已登录,我看不到任何验证。

标签: php sql url header get


【解决方案1】:

为什么不试试mysql_real_escape_string?这样会更安全。

另一方面,使用“Location: loggedon.php?$username”,您将获得如下网址:

loggedon.php?john

但是,对于 $_GET 你应该得到一个像这样的 url:

loggedon.php?username=john

我建议你改变

header("Location: loggedon.php?$username"); 

与:

header("Location: loggedon.php?username=".$username); 

【讨论】:

    【解决方案2】:

    您没有在标头重定向中命名用户名参数。使用

    header("Location: loggedon.php?username=$username");
    代替。

    【讨论】:

    • 感谢您的提示。不幸的是,我仍然收到“查询错误”消息,并且没有来自数据库的数据。
    • 抱歉,错过了该消息。 Galled 发布了一个提到 mysql_real_esacape_string 的答案。看看这个。在链接的手册中有一些很好的例子。基本上,由于括号,您会遇到语法错误。 "SELECT * FROM customer WHERE username='$username'" 可以工作,但 -- 非常 -- 不安全。
    • 谢谢,我现在看看!目前我正在努力研究基础/基础知识,几周后将研究安全方面=)
    • 好的,但不要错过安全方面的事情;)如果它解决了您的问题,请不要忘记将答案标记为已接受。恕我直言,加莱德有正确的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    相关资源
    最近更新 更多