0

ヘッダーの場所に問題があります。私は php を初めて使用し、この別の php ファイルを実行した後、インデックス ページにリダイレクトできません。さらに、私の関数は、テキスト ボックスの内容が空白であるか、デフォルト値の "<>" に等しいかを判断できません。

ありがとうございました

<?php
include('connectionFile.php');

//test for duplicate emails
$query="SELECT * FROM ClientEmail WHERE ClientEmailAddress = '$_POST[emailAdd]'";
$email=$_POST['emailAdd'];
$result=mysql_query($query);
$num=mysql_num_rows($result);

if($num==0)
  {
   if(isset($_POST['emailAdd']) && !empty($_POST['emailAdd']) &&        $_POST['emailAdd'].value != "<<please enter email>>")
{
// the form was submitted
//remove hacker HTML
$email2=strip_tags($_POST['emailAdd']);

//Insert data into database
$sql2="INSERT INTO ClientEmail SET ClientEmailAddress='$email2'";
$result=mysql_query($sql2);

//Direct back to homepage
echo "heloooo";
header('location:/index.php');
   }
else
{

header('location:/index.php');
}
}
else
{
header('Location:http://www.google.com');
`enter code here`}
?>

編集

提案された変更を行った後、エラーログは次のとおりです

通知: 未定義の定数 db_​​selected の使用 - 15 行目の /home/clubbtpk/public_html/connectionFile.php で「db_selected」を想定

警告: ヘッダー情報を変更できません - 28 行目の /home/clubbtpk/public_html/addEmail.php で既に送信されたヘッダー (/home/clubbtpk/public_html/connectionFile.php:15 で開始された出力)

接続ファイルのコードは次のとおりです。

<?php
$host="localhost";
$username="username";
$password ="password";
// Create connection to mysql server
$con=mysql_connect("$host","$username","$password");

// Check connection
if (!$con)
  {
      die ("Failed to connect to MySQL: " . mysql_error());
  }
  // Select database
  $db_selected = mysql_select_db("DB", $con);
  if(!db_selected)
  {
    die ("Cannot connect : " . mysql_error());
  }
?>

編集2

if(!db_selected) を if(!$db_selected) に変更して最初のエラーを解決しました

解決済み 次のコード行を index.php ファイルに追加しました。

<?php
if(isset($_REQUEST["emailAdd"])){
include("addEmail.php");
}
?>

次に、フォームのアクションを "" に変更して、現在のページをリロードします。

<form name="emailAddr" method="post" action="">
4

1 に答える 1

1

リダイレクトの前に何も出力してはなりません。

したがって、これは許可されていません:

echo "heloooo";
header('location:/index.php');

編集: スクリプトで error_reporting を必ず有効にする必要があります。クエリに別のエラーが見つかりました:

$query="SELECT * FROM ClientEmail WHERE ClientEmailAddress = '$_POST[emailAdd]'";

する必要があります

$query="SELECT * FROM ClientEmail WHERE ClientEmailAddress = '" . $_POST['emailAdd'] . "'";

さらに、mysql_* 関数はもう使用せず、mysqli_* 関数にアップグレードする必要があります。また、SQLクエリに挿入する前に、入力されたデータを常に確認してください。

EDIT2:これをスクリプトの先頭に追加します。

ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);

EDIT3:

この行も変更する必要があります。

if(isset($_POST['emailAdd']) && !empty($_POST['emailAdd']) && $_POST['emailAdd'].value != "<<please enter email>>")

次のようにする必要があります。

if(isset($_POST['emailAdd']) && $_POST['emailAdd'] != "<<please enter email>>")

error_reporting をオンにすると、自分で確認できます。

于 2013-07-27T20:55:40.463 に答える