【问题标题】:mysql_connect is setting php headersmysql_connect 正在设置 php 标头
【发布时间】:2015-03-07 16:19:06
【问题描述】:

我的 PHP 脚本最终将插入 MySQL 数据库,我已经验证了变量,并且由于某种原因使用 header() 将用户重定向回 addserver.php 报告以下错误:

Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/includes/mysql.php:2) in /Applications/MAMP/htdocs/scripts/addserver.php on line 61

这是 addserver.php 的内容(位于 /scripts/addserver.php,不要与 HTML 表单页面 addserver.php 混淆)

<?php
error_reporting(-1);
ini_set('display_errors', 'On');
session_start();
// must be logged in
if(!isset($_SESSION['loggedin'])) {
    header('location: /login.php?from=/addserver.php');
    exit();
}

// initialise errors array
$errors = array();

// connect to mysql
require('../includes/mysql.php');

// check name
if(empty($_POST['name'])) {
    array_push($errors, 'The server name field is required');
}
if(!strlen($_POST['name'])>=5 || !strlen($_POST['name'])<=30) {
    array_push($errors, 'Server name must be 5-30 characters long');
}
// check ip
if(empty($_POST['ip'])) {
    array_push($errors, 'IP address field is required');
}
if(!filter_var($_POST['ip'], FILTER_VALIDATE_IP) && !preg_match("/^([-a-z0-9]{2,100})\.([a-z\.]{2,8})$/i", $_POST['ip'])) {
    array_push($errors, 'IP address must be in valid x.x.x.x format and submitted without port.');
}
$ip = strip_tags(mysql_real_escape_string($_POST['ip']));
if(mysql_num_rows(mysql_query("SELECT id FROM servers WHERE ip='$ip'"))) {
    array_push($errors, 'Server IP has already been registered');
}
// check port
if(empty($_POST['port'])) {
    array_push($errors, 'Port is a required field');
}
if(!$_POST['port']>=1024 || !$_POST['port']<=65535) {
    array_push($errors, 'Port number must be 1024-65535');
}
if(!is_integer(intval($_POST['port']))) {
    array_push($errors, 'Port must be an integer (whole number)');
}
// check website link (not required)
if(!empty($_POST['website'])) {
    if(!filter_var($_POST['website'], FILTER_VALIDATE_URL)===false) {
        // try adding the http on
        $website = 'http://'.$_POST['website'];
        // try validation again
        if(!filter_var($website, FILTER_VALIDATE_URL)===false) {
            array_push($errors, 'Website URL must be valid');
        }
    }
}
// do banner upload later

// if errors are set, send back with errors array as a session var.
if(count($errors)!=1) {
    $_SESSION['adderrors'] = $errors;
    header('location: /addserver.php');
    // end script
    exit('Some variables were invalid.');
}
?>

这是mysql.php的内容:

<?php
mysql_connect('localhost','root','root');
mysql_select_db('findmcservers');
?>

【问题讨论】:

  • 在您的 MySQL.php 文件中,&lt;?php?&gt; 标签之外是否有任何空格(空格、空行等)?
  • @MarkBaker 恼人的是没有,我已经检查过了。
  • 那么您可能已经确定了 PHP 中的一个相当大的错误:错误消息清楚地将 mysql.php 的第 2 行标识为生成输出的行....如果那里没有输出,什么都没有那里可能会产生错误输出,那么就有严重故障
  • @MarkBaker mysql_connect 不应该输出任何东西,我在我的网站上包含该文件以连接到 MySQL - 肯定有问题
  • 如果文件在您包含它的其他任何地方都没有生成该错误,请确保它是您包含的正确文件,并且您没有其他一些 mysql .php 文件隐藏在子文件夹中的某处

标签: php mysql http-headers


【解决方案1】:

尝试删除这些 php 文件中的结束 php 标记 (?>)。我见过一些房东对待他们的方式不同。

【讨论】:

    猜你喜欢
    • 2013-01-01
    • 2015-11-25
    • 2021-07-18
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    相关资源
    最近更新 更多