我需要一些简单的东西;我有一个页面,用户点击作者查看与该作者相关的书籍。在显示作者书籍列表的页面上,我想要一个简单的HTML标题:'The books for:AUTHORNAME'
我可以让页面显示作者ID而不是名称。当用户单击作者上一页中的链接时,它看起来像这样:
<a href="viewauthorbooks.php?author_id=<?php echo $row['author_id']?>"><?php echo $row['authorname']?></a>
然后在'viewauthorbooks.php?author_id = 23'上我已经在开始时声明了这一点:
$ author_id = $ _GET ['author_id']; $ authorname = $ _GET ['authorname'];
最后,“AUTHORNAME的书籍,AUTHORNAME,我有这个:
echo $ authorname
(使用PHP标签,但不要让我把它们放进去!)这并没有显示任何内容,但是如果我将其更改为author_id,它会显示已被点击的正确作者ID,但它并不完全是用户友好的! !任何人都可以帮助我!
答案 0 :(得分:0)
您不会在查询字符串中发送它,因此您无法从$ _GET数组中获取它 只需使用id。
从数据库中请求它 重要说明:显示来自客户端的数据时始终使用htmlspacialchars()
。
答案 1 :(得分:0)
作者姓名不在$ _GET中。如您的代码所示,您只能将其用作链接标题。它不在地址中。试试这个:
<a href="viewauthorbooks.php?author_id=<?php echo $row['author_id']?>&authorname=<?php echo $row['authorname']?>"><?php echo $row['authorname']?></a>
最好使用author_id从数据库重新请求它。
修改强>
更详细地解释问题。您有两个页面,new.php页面和viewauthorbooks.php页面。您是使用您发布的链接将用户从新页面发送到视图页面,对吗?
问题是,你的链接在get中分配了一个变量。这是它将生成的查询字符串:
viewauthorbooks.php?author_id=13
该做的是将用户发送到viewauthorbooks并将值“13”放在$_GET
变量中:$_GET['author_id']
。这就是author_id存在并显示在viewauthorbooks上的原因。但是,authorname永远不会传递给viewauthorbooks,因为您从未设置$_GET['authorname']
,因此 $_GET['authorname']
中的不是。如果您希望它在$_GET
中,那么您需要查询字符串如下所示:
viewauthorbooks.php?author_id=13&authorname=bob
您可以使用上面发布的链接的新HTML代码来完成此操作。仔细观察,与现在的情况有很大不同。
但是,通常不鼓励通过GET传递数据,因为查询字符串会显示给用户并使您对注入攻击持开放态度。更好的方法是使用您已经传递给viewauthorbooks.php的author_id再次从数据库中检索authorname。您可以使用在new.php页面上使用的相同代码。
答案 2 :(得分:0)
这是因为您没有在get中定义作者姓名。
您应该将以下网址设为:
<a href="viewauthorbooks.php?author_id=<?php echo $row['author_id']?>&authorname=<?php echo $row['authorname']?>"><?php echo $row['authorname']?></a>
或者更确切地说,使用您从URI中检索到的ID,在新页面上再次从数据库中选择数据。
答案 3 :(得分:0)
您可以像使用author_id
一样从查询字符串中提取$_GET
,但 提防 您需要验证通过通过查询。我希望你能看到,如果没有验证这是多么糟糕的安全漏洞。
我现在正在工作,但这是一个快速的例子,可以在不消除您的查询的情况下为您提供所需的内容。
$id = intval($_GET['author_id']);
// of course, perform more validation checks
// just don't assume its safe.
$sql = "SELECT authorname FROM authors_tb WHERE author_id=" . $id;
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) {
echo "The books for: " . $row['authorname'];
}
您的方法无效的原因是您使用$_GET
URL参数传递给author_name,其中不提供URL中的参数,只有{{ 1}}。