2017-12-23 8 views
0

私はWebサイトをcPanelホスティングに、PHP 5.1から5.4に移動しています。この動きで動かないのは、MySqlデータ挿入後にindex.phpページに戻ることだけです。データはOKに挿入されますが、index.phpページの代わりに空白のページが表示されます。cPanel PHP 5.1から5.4の変更、ヘッダー(場所:index.php)

私はフォーラムを研究し、私が観察したアイデアを使用しています:PHPコードのスペースを削除しました。スクリプトの中でヘッダ(Location:index.php)を動かしました。 Location:とindex.phpの間にスペースがありますが、挿入後にindex.phpページを表示することはできません。 URLはブラウザの行にあり、クリックするとページが更新されます。これは過去に自動的に起こりました。ここで

はコードです:

<?php 
function renderForm($mscdate, $mscname, $mscaffirm, $mscstatus, $error) 
{ 
?> 
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css"> 
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
    <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> 
    <link rel="stylesheet" href="/resources/demos/style.css"> 
    <script type="text/javascript"> 
    $(function() { 
     $('#datepicker').datepicker({dateFormat: 'MM d, yy', altField: '#dbDate', altFormat: 'yy-mm-dd'}); 
    }); 
    </script> 
<?php 
} 

include('connect to database'); 

if (isset($_POST['submit'])) 
{ 
    $mscdate = mysqli_real_escape_string(htmlspecialchars($_POST['mscdate'])); 
    $mscname = mysqli_real_escape_string(htmlspecialchars($_POST['mscname'])); 
    $mscaffirm = mysqli_real_escape_string(htmlspecialchars($_POST['mscaffirm'])); 
    $mscstatus = mysqli_real_escape_string(htmlspecialchars($_POST['mscstatus'])); 
    if ($mscdate == '' || $mscname == '' || $mscaffirm == '') 
    { 
    $error = 'ERROR: Please fill in all required fields!'; 
    renderForm($mscdate, $mscname, $mscaffirm, $mscstatus, $error); 
    } else { 
     mysqli_query("INSERT mscrides SET mscdate='$mscdate', mscname='$mscname', mscaffirm='$mscaffirm', mscstatus='$mscstatus'") 
     or die(mysqli_error()); 
     header("Location:index.php"); 
    } 
}else { // if the form hasn't been submitted, display the form 
renderForm('','','','',''); 
} 
?> 
+0

ブラウザに送信される出力がないことを確認し、 'header()'関数を呼び出す前に空白行がないことを確認してください。https://secure.php.net/manual/en/function.header.php –

+1

あなたがそれを見逃した場合:http://php.net/supported-versions.php –

+0

SQLパラメータのエスケープは理想的ではなく、セキュリティ上の脆弱性の影響を受ける可能性があります。 – halfer

答えて

0

あなたのコードの先頭にob_start()を追加してみてください。

0

Location HTTPリダイレクトをブラウザに送信すると、PHPに実行を停止するよう通知することもなく、通常はexit()で行われます。 PHPアプリケーションでは、通常、リダイレクトが動作するかどうかに関して、主にインターネット/ネットワークの速度のさまざまな要素に依存する競合状態が発生します。 Locationヘッダの後

レースは、具体的に、第一の発生これらのどれである:

  • ブラウザのリダイレクトを受信し、接続を切断
  • (リダイレクト動作する)サーバは、HTMLで本体を送信します操作(リダイレクト、失敗することがありすぎて、ブラウザに依存してもよい)

は、明示的なexit()を持つGETすることで、スクリプトが自然に終了すると思う場合でも、場合にあなたがアペンドヘクタールを持ってお勧めしますndlerまたはシャットダウンハンドラをアクティブにします。

関連する問題