我希望在删除项目时获取我的应用程序弹出一个消息并重定向到另一个页面。我使用javascipt进行重定向的popup和php标头。现在它只执行或弹出或重定向,这取决于首先列出哪一个。我该如何解决这个问题?
<?php
session_start();
require_once('../../includes/mysql_config.php');
$id = isset($_SESSION['id']) ? $_SESSION['id'] : header('location: ../../login.php');
$Cursist = mysqli_query($con, "SELECT id FROM users WHERE id =".$_SESSION['id']);
if(!$Cursist){
header('location: ../login.php');
}
$test = $_GET['id'];
$sql = "DELETE FROM cursus WHERE id = $test";
$result = mysqli_query($con, $sql);
if ($result) {
echo "<script type='text/javascript'>alert('Verwijdert!')</script>";
header("Location: ../cursussen.php?destoyed=true&destroyed_id=".$_GET['id']);
}else {
echo "mislukt";
}
?>
答案 0 :(得分:1)
如果您在标头之前发送一些信息将无效。在向客户端发送故障之前,您只能使用标头。
请记住,在发送任何实际输出之前,必须通过普通HTML标记,文件中的空行或PHP来调用header()。使用include或require,函数或其他文件访问函数读取代码是一个非常常见的错误,并且在调用header()之前输出空格或空行。使用单个PHP / HTML文件时存在同样的问题。
http://php.net/manual/en/function.header.php
您可以使用javascript,但不建议使用,因为用户可以禁用javascript:
echo "<script type='text/javascript'>";
echo "alert('Verwijdert!')";
echo "document.location.href='index.html'";
echo "</script>";
最好的方法是使用会话和标题,您可以在会话中保存var并在var为true时显示消息,并在显示消息时删除会话var
delete.php
$_SESSION['deleted'] = true;
header("Location: index.php);
的index.php
<?php if($_SESSION['deleted']){ ?>
<?php unset($_SESSION['deleted']) ?>
<div>Item was deleted</div>
<?php } ?>
答案 1 :(得分:0)
嗯,问题是重定向会立即将您带到新页面,因此旧页面上的任何javascript都变得无关紧要。您可以在重定向之前使用延迟,以便可以显示javascript警报。
否则,引入您发送到重定向目标页面的变量,并使用此变量在那里触发javascript弹出窗口。