1

わかりましたので、Google でしばらく検索した後、これを見つけることができませんでした。php のエラー ページに戻るボタンを表示しようとしています。現在、「メールが間違っています」「名が間違っています」と表示されます。戻ってもう一度やり直してください。ただし、これらのフォームのページに複数の iFrame があるため、そこにボタンを配置できるようにしたいのですが、試したすべてのことで php エラーが発生します。他に何をすべきかわかりません。行う!

<?php
if(isset($_POST['email'])) {



    function died($error) {
        echo "We're sorry, but there's errors found with the form you submitted.<br /><br />";
        echo $error."<br /><br />";
        echo "Please go back and fix these errors.<br /><br />";
        die();
    }

    if(!isset($_POST['first_name']) ||
        !isset($_POST['email']) ||
        !isset($_POST['comments'])) {
        died('We are sorry, but there appears to be a problem with the form you submitted.');       
    }

    $first_name = $_POST['first_name'];
    $email_to = $_POST['email'];
    $comments = $_POST['comments'];
    $email_from = $_POST['emailf'];
    $email_subject = $_POST['emailt'];

    $error_message = "";
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
  if(!preg_match($email_exp,$email_from)) {
    $error_message .= 'The Email Address you entered does not appear to be valid.<br />';
  }
    $string_exp = "/^[A-Za-z .'-]+$/";
  if(!preg_match($string_exp,$first_name)) {
    $error_message .= 'The First Name you entered does not appear to be valid.<br />';
  }
  if(strlen($error_message) > 0) {
    died($error_message);
  }

    function clean_string($string) {
      $bad = array("content-type","bcc:","to:","cc:","href");
      return str_replace($bad,"",$string);
    }

    $email_message .= "Dear ".clean_string($first_name);
    $email_message .= ",\n\n".clean_string($comments)."\n";


// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);  
?>


Your Email has been sent, please verify!
<form><input type="button" value="Back" onClick="history.back();return true;"></form>

<?php
}
die();
?>
4

4 に答える 4

3

このようなものを使用してみましたか?

header('Location: previouspage.php');
exit;

これexitは、PHP で「headers already sent」という例外をスローしないようにするために重要です。Exit は、スクリプトの実行をその場で停止します。

編集

質問を少し読み違えたので、その戻るボタンを表示している間にエラー メッセージを表示したいですか? コードを少し移動するだけです。

<?php
if(isset($_POST['email'])) {



    function died($error) {
        echo "We're sorry, but there's errors found with the form you submitted.<br /><br />";
        echo $error."<br /><br />";
        echo "Please go back and fix these errors.<br /><br />";
        die();
    }

    if(!isset($_POST['first_name']) ||
        !isset($_POST['email']) ||
        !isset($_POST['comments'])) {
        died('We are sorry, but there appears to be a problem with the form you submitted.');       
    }

    $first_name = $_POST['first_name'];
    $email_to = $_POST['email'];
    $comments = $_POST['comments'];
    $email_from = $_POST['emailf'];
    $email_subject = $_POST['emailt'];

    $error_message = "";
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
  if(!preg_match($email_exp,$email_from)) {
    $error_message .= 'The Email Address you entered does not appear to be valid.<br />';
  }
    $string_exp = "/^[A-Za-z .'-]+$/";
  if(!preg_match($string_exp,$first_name)) {
    $error_message .= 'The First Name you entered does not appear to be valid.<br />';
  }
  if(strlen($error_message) > 0) {
    echo $error_message;
    echo '<form><input type="button" value="Back" onClick="history.back();return true;"></form>';
    exit;
  }

    function clean_string($string) {
      $bad = array("content-type","bcc:","to:","cc:","href");
      return str_replace($bad,"",$string);
    }

    $email_message .= "Dear ".clean_string($first_name);
    $email_message .= ",\n\n".clean_string($comments)."\n";


// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);  
?>


Your Email has been sent, please verify!
<form><input type="button" value="Back" onClick="history.back();return true;"></form>

<?php
}
die();
?>

エラーメッセージが表示されたら、deed メソッドを呼び出すのではなく、メッセージをエコーアウトし、さらに下で使用したのと同じ戻るボタンをエコーアウトして、スクリプトを強制終了します。exit;

于 2013-05-02T08:49:26.140 に答える
2

ここでの方法は、各入力をセッションに保存して、ユーザーが入力に戻ったときにそれが残るようにすることです。次に、タグを介してそれらを送り返すことができますA。ボタンのように見せたい場合は、css を使用してスタイルを設定します。

例えば:

SendEmail.php

<?php
  session_start();

  $foo1 = $_POST['foo1'];
  $foo2 = $_POST['foo2']

  if($error) {
    /* Put inputs in an session */
    $_SESSION['foo1'] = $foo1;
    $_SESSION['foo2'] = $foo2;

    echo 'error <a href="FormEmail.php">go back</a>';
  } else {

    /* Everything is okay, so we can trough our sessions away. */
    unset($_SESSION['foo1']);
    unset($_SESSION['foo2']);

    /* Send email */

  }

?>

FormEmail.php

<?php
  session_start();
?>

<form>
  <input type="input" name="foo1" value="<?php echo $_SESSION['foo1']; ?>" />
  <input type="input" name="foo2" value="<?php echo $_SESSION['foo2']; ?>" />
  <input type="submit" name="submit" value="submit" />
</form>
于 2013-05-02T08:46:46.630 に答える
0

私はphpのためにこれをやった

<?php
if(isset($_POST['email'])) {



    function died($error) {
        echo "We're sorry, but there's errors found with the form you submitted.<br /><br />";
        echo $error."<br /><br />";
        echo "Please go back and fix these errors.<br /><br />";
        die();
    }

    if(!isset($_POST['first_name']) ||
        !isset($_POST['email']) ||
        !isset($_POST['comments'])) {
        died('We are sorry, but there appears to be a problem with the form you submitted.');       
    }

    $first_name = $_POST['first_name'];
    $email_to = $_POST['email'];
    $comments = $_POST['comments'];
    $email_from = $_POST['emailf'];
    $email_subject = $_POST['emailt'];

    $error_message = "";
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
  if(!preg_match($email_exp,$email_to)) {
    $error_message .= 'The Email Address you entered does not appear to be valid.<br />';
  }
    $string_exp = "/^[A-Za-z .'-]+$/";
  if(!preg_match($string_exp,$first_name)) {
    $error_message .= 'The First Name you entered does not appear to be valid.<br />';
  }
  if(strlen($error_message) > 0) {
    echo $error_message;
    echo '<form><input type="button" value="Back" onClick="history.back();return true;"></form>';
    exit;
  }

    function clean_string($string) {
      $bad = array("content-type","bcc:","to:","cc:","href");
      return str_replace($bad,"",$string);
    }

    $email_message .= "Dear ".clean_string($first_name);
    $email_message .= ",\n\n".clean_string($comments)."\n";


$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);  
?>
<?php
{
echo '<script type="text/javascript">history.go(-1);</script>';
}
?>
<?php
die();
}
?>

そして、これはHTML用です

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<meta name="author" content="Oscar Oliu">
<title>Tech Email Template 1<</title>
<style type="text/css">
h4
{
text-align:center;
}
form
{
text-align:center;
}
textarea.c1
{
display:none;
}
p
{
text-align:center;
}
</style>
</head>
<body onLoad="document.forms.htmlform.reset()">
<h4>Tech Email Template 1</h4>
<form id="htmlform" name="htmlform" method="post" action="html_form_send.php">
First Name:<br><input type="text" name="first_name" maxlength="50" size="25"><br>
Email Address:<br><input type="text" name="email" maxlength="80" size="25"><br>
<textarea class="c1" cols="0" rows="0" name="emailf">xxxx@xxxx.com</textarea>
<textarea class="c1" name="emailt" cols="0" rows="0">xxx</textarea>
<input type="submit" value="Submit">
<textarea class="c1" name="comments" cols="32" rows="8"> Email Test Template</textarea>
<textarea readonly cols="32" rows="8">Email Test Template</textarea>
</form>
<p>This form will automatically reload on use.</p>
</body>
</html>

StackOverflow でこれらすべての心にアクセスできなければ、私が望んでいたことを正確に行うことはできませんでした。

于 2013-05-06T05:28:56.970 に答える