私は周りを検索しましたが、この特定の質問に対する答えを見つけることができませんでした. このチュートリアルに基づいた RSVP フォームとして使用している連絡フォームがあります: http://net.tutsplus.com/tutorials/html-css-techniques/build-a-neat-html5-powered -お問い合わせフォーム/
そのフォームのアクションは、データをデータベースに書き込み、いくつかの電子メールを送信する PHP スクリプトに進みます。これは AJAX を介して行われます。データベースのやり取りと電子メールは問題なく機能します。
$_SESSION を使用して、データが送信されたら変数をフォームに戻して、エラーをチェックして条件を使用できるようにしています。問題は、このセッション データは、もう一度送信ボタンを押したときにしか利用できないように見えることです。
問題を簡潔に説明しようとします。
- rsvp のドロップダウン メニューから値を選択し、送信を押します。$_SESSION 変数に保存したその選択からの値は、テストしてもエコーバックされません。
- I 同じドロップダウン メニューから別の値を選択し、もう一度 [送信] を押します。FIRST値は、その $_SESSION 変数からエコー バックされます。
これが私のsubmit.phpファイルです。私はそれをたくさん残しましたが、これは重要なことだと思います:
<?php session_start(); ?>
<?php require_once("includes/connection.php"); ?>
<?php require_once("includes/functions.php"); ?>
<?php
if(isset($_POST)) {
//form validation vars
$formok = true;
$errors = array();
//sumbission data
$ipaddress = $_SERVER['REMOTE_ADDR'];
$date = date('Y-m-d');
$time = date('H:i:s');
$timestamp = $date . " " . $time;
//form data
$firstname = mysql_prep($_POST['firstname']);
$lastname = mysql_prep($_POST['lastname']);
$dinner = mysql_prep($_POST['dinner']);
$reqsong = mysql_prep($_POST['reqsong']);
$email = mysql_prep($_POST['email']);
$rsvp = mysql_prep($_POST['rsvp']);
$message = mysql_prep($_POST['message']);
//what we need to return back to our form
$returndata = array(
'posted_form_data' => array(
'firstname' => $firstname,
'lastname' => $lastname,
'dinner' => $dinner,
'reqsong' => $reqsong,
'email' => $email,
'rsvp' => $rsvp,
'message' => $message
),
'form_ok' => $formok,
'errors' => $errors
);
次に、これが私の rsvp.php フォームです。
<?php session_start(); ?>
<div id="contact-form" class="clearfix">
<?php
//init variables
$cf = array();
$sr = false;
if(isset($_SESSION['cf_returndata'])){
$cf = $_SESSION['cf_returndata'];
$sr = true;
}
?>
<ul id="errors" class="<?php echo ($sr && !$cf['form_ok']) ? 'visible' : ''; ?>">
<li id="info">There were some problems with your form submission:</li>
<?php
if(isset($cf['errors']) && count($cf['errors']) > 0) :
foreach($cf['errors'] as $error) :
?>
<li><?php echo $error ?></li>
<?php
endforeach;
endif;
?>
</ul>
<?php if($cf['posted_form_data']['rsvp'] == "Will Attend"): ?>
<p id="success" class="<?php echo ($sr && $cf['form_ok']) ? 'visible' : ''; ?>">Thank you for your RSVP! <br> You will receive an email with additional information soon. <br><br> If your invitation was addressed to more than one person, please enter their information and submit again. <br><br> We look forward to seeing you soon!</p>
<?php endif; ?>
<?php if($cf['posted_form_data']['rsvp'] == "Will Not Attend"): ?>
<p id="success" class="<?php echo ($sr && $cf['form_ok']) ? 'visible' : ''; ?>">Too bad you can't make it.</p>
<?php endif; ?>
<form method="post" action="submit.php">
<input type="text" id="firstname" name="firstname" value="<?php echo ($sr && !$cf['form_ok']) ? $cf['firstname'] : '' ?>" placeholder="First Name" required autofocus />
<input type="text" id="lastname" name="lastname" value="<?php echo ($sr && !$cf['form_ok']) ? $cf['lastname'] : '' ?>" placeholder="Last Name" required autofocus />
<input type="email" id="email" name="email" value="<?php echo ($sr && !$cf['form_ok']) ? $cf['email'] : '' ?>" placeholder="Email Address" required />
<select id="rsvp" name="rsvp">
<option value="Will Attend">Will Attend</option>
<option value="Will Not Attend">Will Not Attend</option>
</select>
<select id="dinner" name="dinner">
<option value="select">Dinner Selection</option>
<option value="Chicken" <?php echo ($sr && !$cf['form_ok'] && $cf['posted_form_data']['dinner'] == 'Chicken') ? "selected='selected'" : '' ?>>Chicken</option>
<option value="Pork" <?php echo ($sr && !$cf['form_ok'] && $cf['posted_form_data']['dinner'] == 'Pork Fillet') ? "selected='selected'" : '' ?>>Pork</option>
</select>
<input type="reqsong" id="reqsong" name="reqsong" value="<?php echo ($sr && !$cf['form_ok']) ? $cf['posted_form_data']['reqsong'] : '' ?>" placeholder="Request a Song to be Played!"/>
<textarea id="message" name="message" placeholder="Leave us a message if you like! If you have any allergies or dietary needs, please indicate them here."><?php echo ($sr && !$cf['form_ok']) ? $cf['posted_form_data']['message'] : '' ?></textarea>
<span id="loading"></span>
<input type="submit" value="Submit" id="submit-button" />
</form>
<?php unset($_SESSION['cf_returndata']); ?>
</div>
大量のコードで申し訳ありません。あなたが持っているアイデアは大歓迎です。ありがとう!