2017-04-14 23 views
-1

私はすでにこの問題を修正しましたが、空白を削除しようとしましたが、何もなかったので、ob_start();機能はありません。私が何をしても、私にはこのエラーが出る。警告:ヘッダー情報を変更することはできません。

警告:ヘッダー情報を変更することはできません - /home/gener105/public_html/includes/vault_post.inc.phpですでに によって送られたヘッダ(出力が/home/gener105/public_html/header.php:37で開始)行に12

出力は私のheader.phpファイル(図1)の最後の行から始まり、header();私は使用する必要がある機能で。これは、私がheader()を使用しているためです。 vault_post.inc.phpの12行目にある関数です(図2)。

私はちょうど理由が混乱している理由は、ヘッダーの前に出力がないためです。

FIG1(header.phpの)

<?php 
session_start(); 
include 'includes/dbh.php'; 
include 'includes/vault_post.inc.php'; 
date_default_timezone_set('America/New_York'); 
?> 
<!DOCTYPE html> 
<html lang="en"> 

<head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 
    <meta name="description" content=""> 
    <meta name="author" content=""> 
    <title>Generation Diary - Leave Them Something For Later</title> 
    <!-- Bootstrap Core CSS --> 
    <link href="lib/bootstrap/css/bootstrap.min.css" rel="stylesheet"> 
    <!-- Custom Fonts --> 
    <link href="lib/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"> 
    <link href="https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic" rel="stylesheet" type="text/css"> 
    <link href="https://fonts.googleapis.com/css?family=Cabin:700" rel="stylesheet" type="text/css"> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css"> 
    <!-- Theme CSS --> 
    <link href="css/grayscale.min.css" rel="stylesheet"> 
    <!-- Temporary navbar container fix until Bootstrap 4 is patched --> 
    <style> 
     .navbar-toggler { 
      z-index: 1; 
     } 

     @media (max-width: 576px) { 
      nav > .container { 
       width: 100%; 
      } 
     } 
    </style> 
</head> 

FIG2(vault_post.inc.php)第一の機能は、ファイル内の関数のニーズ

<?php 
function setVaultPosts($conn) { 

    if (isset($_POST['vault_sub'])) { 
     $uid = $_POST['uid']; 
     $date = $_POST['date']; 
     $content = $_POST['content']; 

      $sql = "INSERT INTO vaults (uid, date0, content) VALUES ('$uid', '$date', '$content')"; 
      $result = mysqli_query($conn, $sql); 

      header("Location: http://www.generationdiary.com/user_vault.php?success"); 
    } 
} 

フォームを必要thatsの

<?php include('header.php'); ?> 
    <div class="container" id="vault_main"> 
     <div class="row row-offcanvas row-offcanvas-right"> 
      <div class="col-12 col-md-9"> 
       <p class="float-right hidden-md-up"> 
        <button type="button" class="btn btn-primary btn-sm" data-toggle="offcanvas">Toggle nav</button> 
       </p> 
       <div class="jumbotron"> 
        <h1 class="text-center"> 
         <?php 
        if (isset($_SESSION['username'])) { 
          echo $_SESSION['firstname'] . " " . $_SESSION['lastname'] . "'s"; 
         } else { 
          echo "You are not logged in"; 
         } 

        ?> 

        </h1> 
        <h2 class="text-center">Vault</h2> </div> 
       <?php 
       if (isset($_SESSION['username'])) { 
        echo " 
        <form action='".setVaultPosts($conn)."' method='POST'> 
        <input type='hidden' name='uid' value='".$_SESSION['username']."'> 
        <input type='hidden' name='date' value='".date(' Y-m-d ')."'> 
        <textarea class='ckeditor' name='content'></textarea> 
        <br> 
        <button class='btn btn-default btn-lg' type='submit' name='vault_sub'>Submit</button> 
        "; 
        getVaultPosts($conn); 
       } else { 
        echo "log in"; 
       } 

      ?> 
      </div> 
      <div class="col-6 col-md-3 sidebar-offcanvas" id="sidebar"> 
       <div class="fixed"> 
        <div class="list-group"> <a href="#" class="list-group-item active">Vault</a> <a href="recipient.php" class="list-group-item">Recipient Settings</a> <a href="settings.php" class="list-group-item">Account Settings</a> <a href="includes/logout.inc.php" class="list-group-item">Log Out</a> </div> 
       </div> 
      </div> 
     </div> 
    </div> 
<?php include('footer.php'); ?> 
+0

は 'header.phpのが呼ばれた場所 –

+0

は、あなたが言うことができるsetVaultPosts'? – Hmmm

+0

私は、この機能を使用したいフォームを持つPHPページで、ローカルサーバーのhowerver上で動作しています。 – cosmichero2025

答えて

1

これは完全に明らかです。また、コードには完全な欠陥があります。これはおそらく、HTMLフォームの提出を初めて使用しているためです。

  1. あなたのheader.phpにはすぐに送信されるHTMLテキストが含まれています。ヘッダー()関数を呼びたいので、手前に何も送られないようにする必要があります。コードの最初の行にsession_start()を置いていますが、これは正しいので、この関数がそれを使用しているPHPスクリプト処理のコードの最初の行であることを確認する必要があります。この関数が呼び出される前にヘッダー情報が送信されないように注意する必要があります。

  2. HTMlフォームのアクション属性は、PHP関数ではなくURLパスです。 <form action='form_process.php'>。ここでは、リンクのhref(相対パスまたは絶対パス)と同じ方法でパスを設定します。 form_process.phpは受け取ったフォームデータを処理するための$ _POSTグローバル変数を受け取ります。 http://php.net/manual/en/reserved.variables.post.phpあなたはこの関数を呼び出している

+0

だから私はファイルパスにすべての機能を持っていますが、関数を取り除いてif(isset)文にするのですか? – cosmichero2025

+0

正確には、スクリプトは実際に処理を行うべきです。 – TurtleTread

+0

ちょっと働いた!私はこれで初めてで、私は間違っていたと思われる個々の関数を呼び出すと良いと思いました:D – cosmichero2025

関連する問題