为链接重写PHP URL
我在表中为每一行删除链接。 当我单击该链接时,我将id传递给一个页面,该页面使用该id删除该行。 我的url的最后一部分看起来像delete_row.php?id=5 我可以只显示delete_row.php而不显示?id=5吗为链接重写PHP URL,php,Php,我在表中为每一行删除链接。 当我单击该链接时,我将id传递给一个页面,该页面使用该id删除该行。 我的url的最后一部分看起来像delete_row.php?id=5 我可以只显示delete_row.php而不显示?id=5吗 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <htm
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script language="javascript" type="text/javascript">
function redirect(URL)
{
document.location="delete_row.php";
return false;
}
</script>
</head>
<body>
<?php
$con = mysql_connect("localhost","root","root");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("test", $con);
$result = mysql_query("SELECT * FROM users");
?>
<table border="1">
<th>Name</th>
<th>Age</th>
<th> </th>
<?php
while($row = mysql_fetch_array($result))
{?>
<tr>
<td><?php echo $row['name'];?></td>
<td><?php echo $row['age'];?></td>
<td><a href="javascript:" onclick="return redirect('delete_row.php?id=<?php echo $row['id']; ?>');">Delete</a></td>
</tr>
<?php } ?>
</table>
<?php
mysql_close($con);
?>
</body>
</html>
无标题文件
函数重定向(URL)
{
document.location=“delete_row.php”;
返回false;
}
名称
年龄
这是文件名为delete_row.PHP的PHP部分
<?php
$con = mysql_connect("localhost","root","root");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("test", $con);
if(isset($_REQUEST['id']))
$id = $_REQUEST['id'];
mysql_query("DELETE FROM users WHERE id='$id'");
mysql_close($con);
?>
这对你有用吗
<a href="delete_row.php" onclick="this.href = this.href + '?id=5'">Delete</a>
您也可以这样做:
<script language="javascript" type="text/javascript">
function redirect(URL)
{
if(confirm('Are you sure you wish to delete this item?'))
document.location=URL;
return false;
}
</script>
<a href="javascript:" onclick="return redirect('delete_row.php?id=5');">Delete</a>
函数重定向(URL)
{
如果(确认('您确定要删除此项目吗?'))
document.location=URL;
返回false;
}
页面如何知道要删除哪一行?你必须向它发送某种标识符。如果您的意思是,在删除该id后,再次隐藏该id,则可以通过使用以下命令重定向:
标题('Location:urlOfPageWithoutQueryString') 您可以使用一个小表单,“删除”按钮是一个提交按钮。将方法设置为“post”。例如:
<form action="delete_row.php" method="post">
<input type="hidden" name="row" value="5">
<input type="submit" value="Delete">
</form>
在PHP文件中,可以使用POST
值,而不是GET
值。这也是更正确的--GET
操作应该是幂等的(即除了返回请求的信息之外应该没有任何效果)。您不应该使用GET来执行此类操作,因为:
[……]该公约已确定,缔约国
HEAD方法不应具有采取行动的意义
除了检索。这些方法应该被认为是“安全的”
在可以对ID使用隐藏表单控件的位置使用POST表单:
<form action="delete_row.php" method="post">
<input type="hidden" name="id" value="5">
<input type="submit" value="Delete row">
</form>
除了安全方法的原因外,使用POST而不是GET也不容易受到攻击。在这一点上,您还应该考虑使用所谓的CSRF令牌来进一步降低成功的CSRF攻击的几率。您应该这样做。您可以尝试POST而不是GET。我想真正的问题是“为什么要这样做?”这是一个删除链接,而不是表单。所以我不能给予或得到POST@B泰勒:我需要这样做,因为如果我们直接给出像或这样的URL,那么记录就会被删除。我需要避免Craig的回答很聪明,但当然需要JS。你必须自己决定是否需要JS。或者,你可以用一个标签做一些事情,并在。。。用JS。@Craig:我还是在点击删除链接时得到了这个消息,我的第二个解决方案可能适合你。您只需要使用该脚本一次,因为onclick使用URL调用该函数,所以多行都可以调用同一个函数。@Craig:Itz在我单击“删除”按钮时再次显示该id它显示的是什么id?你的意思是在点击状态栏中显示的第一个解决方案链接后?@Craig:oops…对不起。我忘了用文件名替换URL。现在它没有显示ID