0

フォームが送信された後、新しい「thankyou.php」ファイルをロードする際に問題が発生しています。フォームはそれ自体にデータを送信し、すべてのデータが検証に合格すると、データベースへの保存に進みます。

「thankyou.php」はかなり読み込まれますが、「signup.php」は残っており、両方のファイルの出力は同じページに残ります。新しいページにしたいのですが、うまくいきません。

これが私の衛生状態です:

if ($_SERVER["REQUEST_METHOD"] == "POST")
{
if (empty($_POST["firstName"]))
{$Err[] = "* First Name is required";}
else
{
$name = test_input($_POST["firstName"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$name))
  {
  $Err[] = "Only letters are allowed in First Name"; 
  }
}

if (empty($_POST["email"]))
{$Err[] = "* Email is required";}
else
{
$email = test_input($_POST["email"]);
// check if e-mail address syntax is valid
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email))
  {
  $Err[] = "Invalid email format"; 
  }
}   
}

そしてフォーム:

<div id = "signupform">

" > メールアドレス名

データベース接続と挿入:

try {
  $conn = new PDO('mysql:host=localhost; dbname=mydb', 'root', ''); 
  $conn->setAttribute(PDO:: ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}

catch(PDOException $pe) { echo('接続エラー。理由: ' .$pe->getMessage()); }

//値が空でない場合はデータベースにデータを挿入し、サニタイズします if (!empty($_POST["firstName"]) && !empty($_POST["email"])) { $qry = "INSERT INTO userdetails (email, firstName) 値 (?, ?)";

$q = $conn->prepare($qry) or die("ERROR: " . implode(":", $conn->errorInfo()));

$q->bindParam(1, $email);
$q->bindParam(2, $firstName);


try {
  if($q->execute()){
    header("Location: invoice.php");
    exit;
  }
  }
catch(PDOException $pe) {
  echo('Connection error, because: ' .$pe->getMessage());
}

}

これですべてですが、まだ新しいページをロードしていません。

4

2 に答える 2

0

問題はあなたが2回電話していることだと思います、$q->execute()これを試してください:

try {
    if ($q->execute()){
        header("Location: thankyou.php");
        exit;
    }
} catch(PDOException $pe) {
    echo('Connection error, because: ' .$pe->getMessage());
}
于 2013-10-27T04:20:01.493 に答える