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);

编辑3:

您也必须更改此行:

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 回答