【发布时间】:2014-02-06 18:06:49
【问题描述】:
在此页面上,我有一个要选择然后显示一条消息的查询、一个删除消息的查询和一个添加消息的查询。当删除消息和添加消息的查询成功运行时,我将重定向回同一页面,以便用户可以看到更新。因为我在执行此操作时需要传递一些变量,所以我使用标头重定向。
$home_url = 'http://' 。 $_SERVER['HTTP_HOST'] 。目录名($_SERVER['PHP_SELF'])。 '/discussion.php?caseid=' 。 $case_id.'&did='.$discussion_id.'&user_id='.$user_id; header('位置:' . $home_url);
我注意到我的第二个重定向(用于添加消息的重定向)给了我这个
警告:无法修改标头信息 - 标头已由第 126 行 C:\xampp\htdocs\casekeeper\discussion.php 中的(输出从 C:\xampp\htdocs\casekeeper\discussion.php:85 开始)发送
在我添加 3-4 条消息后。我可以不必在同一页面上标头重定向消息吗?是我错误地设置了脚本还是我只是在完全错误的路径上?
$query2 = "SELECT user_profile.first_name, user_profile.last_name, discussion_messages.message_text, discussion_messages.message_id FROM `user_profile` INNER JOIN discussion_messages ON (user_profile.user_id = discussion_messages.user_id) WHERE discussion_messages.discussion_id = '" . $_GET['did'] . "' ORDER BY discussion_messages.message_id DESC";
$data2 = mysqli_query($dbc, $query2);
while ($row2 = mysqli_fetch_array($data2)) {
$message_id = $row2['message_id'];
?>
<div class="row">
<div class="col-xs-4 col-md-2">
</div>
<div class="col-xs-8 col-md-10 discussion_title">
<?php echo '<h5 class="discussionname">' . $row2['first_name'] . ',' . $row2['last_name'] . '</h5>';?>
<?php echo '<h5 class="">' . $row2['message_text'] . '</h5>';?>
<h6 class="pull-right">Jan. 03 </h6>
<div>
<?php
if (isset($_POST['delete'])) {
// Grab the profile data from the POST
$messageid = mysqli_real_escape_string($dbc, trim($_POST['messageid']));
$queryd = "DELETE FROM `discussion_messages` WHERE message_id = '$messageid' ";
mysqli_query($dbc, $queryd)
or die("Unable to connect");
mysqli_close($dbc);
$home_url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/discussion.php?caseid=' . $case_id.'&did='.$discussion_id.'&user_id='.$user_id;
header('Location: ' . $home_url);
}
?>
<div>
<form method="post">
<?php echo '<input type="hidden" value="'.$row2['message_id'].'" name="messageid" />'; ?>
<input type="submit" name="delete" class="btn btn-info btn-sm" value="delete"/>
</form>
</div>
</div>
</div>
</div>
<?php
};
?>
<br>
<hr>
<?php
if (isset($_POST['submit'])) {
// Grab the profile data from the POST
$message = mysqli_real_escape_string($dbc, trim($_POST['message']));
$query3 = "INSERT INTO `discussion_messages`(`message_text`, `discussion_id`, `user_id`, `message_date_time`, `case_id`) VALUES ('$message','$discussion_id','$user_id', NOW(), '$case_id')";
mysqli_query($dbc, $query3)
or die("Unable to connect");
//Confirm success with the user
mysqli_close($dbc);
$update_url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/discussion.php?caseid=' . $case_id.'&did='.$discussion_id.'&user_id='.$user_id;
header('Location: ' . $update_url);
};
?>
<div class="row col-md-10 col-md-offset-1">
<div class="well well-lg">
<form role="form" method="post">
<div class="form-group">
<label class="sr-only" for="fact_text">Fact Text</label>
<textarea name="message" class="form-control" rows="10" placeholder="Put note here"></textarea>
</div>
<br>
<input type="submit" value="Add to discussion" name="submit" class="btn btn-info btn-sm" />
</form>
</div>
</div>
【问题讨论】:
-
至于数以千计的错误消息的精确欺骗:您已经执行了输出之前您尝试进行
header()调用 -
每次我尝试将标题调用放在任何输出上方时,它都会说找不到页面,如果我想重定向回页面我已经打开但无法使用标题.....有吗另一种方法来做到这一点,所以我仍然可以在 URL 甚至在帖子中传递变量?
标签: php mysql http-headers