在与 post 相同的 PHP 页面中处理数据库删除操作
Process database delete action in the same PHP page with post
我正在构建 PHP 处理员工休假记录的应用程序。在此应用程序中,主屏幕填充数据库记录和操作按钮。当用户单击操作按钮时,它从 table 中获取数据库 ID 并通过另一个文件删除该记录,然后重定向回同一页面。此机制使用 HTML _GET 方法实现。这意味着任何人都可以在 URL 提要中看到行 ID,如果有人请求此 url 具有不同的行 ID,PHP 文件将删除该记录,因为未采取任何其他安全措施防止那个。而且这个应用程序没有使用任何类型的会话。
这是我上面提到的任务的 href 代码。
echo "<a href='rejectone.php?id=$lvid' class='btn btn-danger btn-xs m-r-1em'>Cancal</a>";
这是我的 rejectone.php 代码
<?php
$lid =$_GET['id'];
include 'database.php';
$accval = "Accept";
try {
$query = "UPDATE leavesrecords SET leavestatus = 'Reject' WHERE lvid = '$lid'";
$stmt = $con->prepare( $query );
$stmt->bindParam(1, $id);
$stmt->execute();
}
catch(PDOException $exception){
die('ERROR: ' . $exception->getMessage());
}
header( "refresh:0;url=bs.php" );
?>
我有两个问题
1.) 我怎样才能 运行 同一个 PHP 文件中的 rejectone 任务而不重定向到另一个 PHP 文件
2.) 如果我仍然使用jejectone.php file
,如何使用HTML _POST 方法而不是get 方法来传输数据
谢谢!!
首先改变你的线路:
echo "<a href='rejectone.php?id=$lvid' class='btn btn-danger btn-xs m-r-1em'>Cancal</a>";
到
echo '<a href="javascript:;" class="btn btn-danger btn-xs m-r-1em delete-item" primary-key="'.$lvid.'">Cancal</a>';
如果您还没有在您的网站上包含 jQuery,您可以在关闭之前将此脚本添加到您的页面来实现
</head>
标签
<script type="text/javascript" src="https://code.jquery.com/jquery-3.1.0.min.js"></script>
将此 JavaScript 文件添加到页面底部,就在关闭之前 </body>
<script type="text/javascript">
$(document).ready(function(){
$(document).on('click', '.delete-item', function(e){
e.preventDefault();
if(!confirm('Are you sure you want to delete this item?')) return false;
$.post('bs.php', {'id': t.attr('primary-key'), 'delete_item': 1}, function(e){
window.location = 'bs.php';
})
})
})
</script>
将您的 rejectone.php 复制到 bs.php,但进行以下更改:
if(isset($_POST['delete_item']))
{
$lid = (int)$_POST['id'];
include 'database.php';
$accval = "Accept";
try {
$query = "UPDATE leavesrecords SET leavestatus = 'Reject' WHERE lvid = :lid ";
$stmt = $con->prepare( $query );
$stmt->bindParam(':lid', $lid );
$stmt->execute();
}
catch(PDOException $exception){
die('ERROR: ' . $exception->getMessage());
}
}
就是这样。
使用ajaxpost方法。有关详细信息,请参阅带有示例代码的已接受解决方案的完整示例:
然后使用 jquery 从页面中删除该记录,这将提供更好的 UI 体验。
我正在构建 PHP 处理员工休假记录的应用程序。在此应用程序中,主屏幕填充数据库记录和操作按钮。当用户单击操作按钮时,它从 table 中获取数据库 ID 并通过另一个文件删除该记录,然后重定向回同一页面。此机制使用 HTML _GET 方法实现。这意味着任何人都可以在 URL 提要中看到行 ID,如果有人请求此 url 具有不同的行 ID,PHP 文件将删除该记录,因为未采取任何其他安全措施防止那个。而且这个应用程序没有使用任何类型的会话。
这是我上面提到的任务的 href 代码。
echo "<a href='rejectone.php?id=$lvid' class='btn btn-danger btn-xs m-r-1em'>Cancal</a>";
这是我的 rejectone.php 代码
<?php
$lid =$_GET['id'];
include 'database.php';
$accval = "Accept";
try {
$query = "UPDATE leavesrecords SET leavestatus = 'Reject' WHERE lvid = '$lid'";
$stmt = $con->prepare( $query );
$stmt->bindParam(1, $id);
$stmt->execute();
}
catch(PDOException $exception){
die('ERROR: ' . $exception->getMessage());
}
header( "refresh:0;url=bs.php" );
?>
我有两个问题
1.) 我怎样才能 运行 同一个 PHP 文件中的 rejectone 任务而不重定向到另一个 PHP 文件
2.) 如果我仍然使用jejectone.php file
,如何使用HTML _POST 方法而不是get 方法来传输数据谢谢!!
首先改变你的线路:
echo "<a href='rejectone.php?id=$lvid' class='btn btn-danger btn-xs m-r-1em'>Cancal</a>";
到
echo '<a href="javascript:;" class="btn btn-danger btn-xs m-r-1em delete-item" primary-key="'.$lvid.'">Cancal</a>';
如果您还没有在您的网站上包含 jQuery,您可以在关闭之前将此脚本添加到您的页面来实现
</head>
标签
<script type="text/javascript" src="https://code.jquery.com/jquery-3.1.0.min.js"></script>
将此 JavaScript 文件添加到页面底部,就在关闭之前 </body>
<script type="text/javascript">
$(document).ready(function(){
$(document).on('click', '.delete-item', function(e){
e.preventDefault();
if(!confirm('Are you sure you want to delete this item?')) return false;
$.post('bs.php', {'id': t.attr('primary-key'), 'delete_item': 1}, function(e){
window.location = 'bs.php';
})
})
})
</script>
将您的 rejectone.php 复制到 bs.php,但进行以下更改:
if(isset($_POST['delete_item']))
{
$lid = (int)$_POST['id'];
include 'database.php';
$accval = "Accept";
try {
$query = "UPDATE leavesrecords SET leavestatus = 'Reject' WHERE lvid = :lid ";
$stmt = $con->prepare( $query );
$stmt->bindParam(':lid', $lid );
$stmt->execute();
}
catch(PDOException $exception){
die('ERROR: ' . $exception->getMessage());
}
}
就是这样。
使用ajaxpost方法。有关详细信息,请参阅带有示例代码的已接受解决方案的完整示例: