PHP重定向到另一个页面并传递值?
我有一个问题,我需要重定向到另一个页面并传递一个值,这很简单,我知道如何做,但有一个旧的标题问题:无法修改标题信息-标题已由。。。第17行PHP重定向到另一个页面并传递值?,php,Php,我有一个问题,我需要重定向到另一个页面并传递一个值,这很简单,我知道如何做,但有一个旧的标题问题:无法修改标题信息-标题已由。。。第17行 <?php include('m_a2_functions.php'); ?> <?php global_header(LOGIN); ?> <?php login(); ?> <?php if(isset($_POST['submit'])) { connect(); $username = $_
<?php include('m_a2_functions.php'); ?>
<?php global_header(LOGIN); ?>
<?php login(); ?>
<?php
if(isset($_POST['submit']))
{
connect();
$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT password from users where username = '$username'";
$result = mysql_query($query) or die ("There was an error executing the query $query:<br/>".mysql_error());
$row = mysql_fetch_array($result);
$encrypted_pass = $row[0];
if (crypt($password, $encrypted_pass) == $encrypted_pass) {
$flag = "y";
header('Location: m_a2_view.php?flag=y');
}
}
?>
<?php validation(); ?>
<?php page_footer(); ?>
<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
'; ?>
第17行
<?php include('m_a2_functions.php'); ?>
<?php global_header(LOGIN); ?>
<?php login(); ?>
<?php
if(isset($_POST['submit']))
{
connect();
$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT password from users where username = '$username'";
$result = mysql_query($query) or die ("There was an error executing the query $query:<br/>".mysql_error());
$row = mysql_fetch_array($result);
$encrypted_pass = $row[0];
if (crypt($password, $encrypted_pass) == $encrypted_pass) {
$flag = "y";
header('Location: m_a2_view.php?flag=y');
}
}
?>
<?php validation(); ?>
<?php page_footer(); ?>
<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
我知道这就是原因。它在我的页面开始加载全局_标题,然后无法重定向到其他页面。一旦我点击提交,我的页面应该重定向,但它不能
即使我开始移除东西,它也不会起作用。在完全摆脱全局_header()之后,它最终会起作用,这是我无法做到的。错误是由于重定向之前已经有输出造成的。如果你真的想用这种编码风格保持事情的顺序,你可以做的就是缓冲输出:
<?php ob_start(); ?>
<?php include('m_a2_functions.php'); ?>
<?php global_header(LOGIN); ?>
<?php login(); ?>
<?php
if(isset($_POST['submit']))
{
connect();
$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT password from users where username = '$username'";
$result = mysql_query($query) or die ("There was an error executing the query $query:<br/>".mysql_error());
$row = mysql_fetch_array($result);
$encrypted_pass = $row[0];
if (crypt($password, $encrypted_pass) == $encrypted_pass) {
$flag = "y";
header('Location: m_a2_view.php?flag=y');
ob_end_clean(); // Discard the buffer
} else {
ob_end_flush(); // Display the contents of the buffer
}
}
?>
<?php validation(); ?>
<?php page_footer(); ?>
出现此问题的原因是您的脚本是多个打开的
的PHP
标记,它们之间有空格和新行
替换
<?php include('m_a2_functions.php'); ?>
<?php global_header(LOGIN); ?>
<?php login(); ?>
<?php
将重定向放在调用global_header()
使用输出缓冲No-sir之前,这不是错误<代码>全局_头()
已经发送了头,所以我不能使用header()再次发送它们代码>!即使删除了全局标头。。您仍然会得到相同的错误。。。。。试试看。。我会更新我的答案,让它成为我认为最有效的方法。在我写这篇文章之前,我这么做了。用户minitech给出了一个非常干净和最优的解决方案。同意Baba。minitech的解决方案是最好的选择,但代码可以使用重构。编辑:实际上你的解决方案更好,谢谢你,哈哈。我是个无知的人。
include ('m_a2_functions.php');
if (isset ( $_POST ['submit'] )) {
connect ();
$username = $_POST ['username'];
$password = $_POST ['password'];
$query = "SELECT password from users where username = '$username'";
$result = mysql_query ( $query ) or die ( "There was an error executing the query $query:<br/>" . mysql_error () );
$row = mysql_fetch_array ( $result );
$encrypted_pass = $row [0];
if (crypt ( $password, $encrypted_pass ) == $encrypted_pass) {
$flag = "y";
header ( 'Location: m_a2_view.php?flag=y' );
}
} else {
echo global_header ( "LOGIN" );
login ();
}
validation ();
page_footer ();
function global_header($page_title) {
$content = '<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
<head>
<title><?php echo "MARK - ' . $page_title . '</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<div id="container">
<div id="logo"></div>';
return $content;
}