Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为链接重写PHP URL_Php - Fatal编程技术网

为链接重写PHP URL

为链接重写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

我在表中为每一行删除链接。 当我单击该链接时,我将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">
<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>&nbsp;</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