Php 脚本头过早结束?

Php 脚本头过早结束?,php,session,submit,isset,Php,Session,Submit,Isset,我对代码有问题,这是使用头时过早执行错误 代码: <?php session_start(); require 'config.php'; $prepend = "<span class='welcome'>"; $append = "</span>"; if (!isset($_SESSION['name'])) { header("Location: login.php"); } echo $prepend."Здравей ".$_SESSION['name'

我对代码有问题,这是使用
头时过早执行错误

代码:

<?php
session_start();
require 'config.php';
$prepend = "<span class='welcome'>";
$append = "</span>";
if (!isset($_SESSION['name'])) {
header("Location: login.php");
}
echo $prepend."Здравей ".$_SESSION['name'].$append."</br>";


if (isset($_POST['submit'])) 
{

$newname = mysql_real_escape_string($_POST['newname']);
$newpass = mysql_real_escape_string($_POST['newpass']);
$oldpass = mysql_real_escape_string($_POST['oldpass']);
$checkPass = "SELECT pass from admin WHERE pass = '$_POST[oldpass]'";
$rs = mysqli_query($connect,$checkPass);
$data = mysqli_fetch_array($rs, MYSQLI_NUM);
if ($data > 0) 
{
        $query = "UPDATE admin SET pass ='".$_POST['newpass']."',name ='".$_POST['newname']."'" ;
        $result = mysqli_query($connect, $query);

    if ($result === true) 
    {
        echo "Update sucessfuly!";
    }

   }
    else {
    header('Location: admin.php?failed=1');
    }
 }
 ?>

第一次打开页面时,执行else部分,因为没有设置会话变量,所以需要先设置会话变量

$_SESSION['sessionName']= $value;
您必须在其他页面上完成此操作,如果是,请共享代码

并尝试使用

if(mysqli_num_row($data)>0)
{

$query = "UPDATE admin SET             
pass='".$_POST['newpass']."',name='".$_POST['newname']."'" ;
    $result = mysqli_query($connect, $query);

if ($result === true) 
{
    echo "Update sucessfuly!";
}

   }

    else{
    header('Location: admin.php?failed=1');
    }
 }
 ?>

首先,代码中有两行奇怪的代码:

$rs = mysqli_query($connect,$checkPass);
$data = mysqli_fetch_array($rs, MYSQLI_NUM);
这些函数不存在,事实上您可能使用了
mysql_……()
函数,前面的语句似乎证实了这一点

现在当你执行

$data = mysql_fetch_array($rs, MYSQLI_NUM);
然后,
$data
是一个数组(返回的下一条记录)或FALSE(当不再存在记录时)。此语句应该属于循环

无论如何,在代码的当前形式中,当您执行
if($data>0)
时,它不能返回任何有意义的内容,因为
$data
是一个数组


因此,您必须根据您的需要重构所有这段代码(我想您希望控制上一次查询确实找到了
pass

谢谢,我会尝试的。