setcookieでクッキーを送信するとスクリプトが停止する

前提

アンケートを行い、一定の条件を満たした人に参加申込書のリンクを表示したい。

発生している問題・エラーメッセージ

アンケートに回答し、送信するボタンを押して、下のコードで$ansがok/ngとなったときのクッキーを書き込もうとして問題が発生します。
ちなみに、回答が未選択だったときの処理は問題なく動作しています。
意図している動作:クッキーを書き込み、参加の可否を表示する。
各設問の1か2を選択していれば可能、各設問の3か4を選んでいれば不可能としたい。

function check_answer(){ $ans=['','','','','','','']; if($_post["q1"]){ if($_POST["q1"]=="a1"||$_POST["q1"]=="a2") $ans[1]="ok"; else $ans[1]="ng"; } if($_POST["q2"]){ if($_POST["q2"]=="a1" || $_POST["q2"]=="a2") $ans[2]="ok"; else $ans[2]="ng"; } if($_POST["q3"]){ if($_POST["q3"]=="a1" || $_POST["q3"]=="a2") $ans[2]="ok"; else $ans[3]="ng"; } if($_POST["q4"]){ if($_POST["q4"]=="a1" || $_POST["q4"]=="a2") $ans[4]="ok"; else $ans="ng"; } if($_POST["q5"]){ if($_POST["q5"]=="a1" || $_POST["q5"]=="a2") $ans[5]="ok"; else $ans[5]="ng"; } if($_POST["q6"]){ if($_POST["q6"]=="a1" || $_POST["q6"]=="a2") $ans[6]="ok"; else $ans[6]="ng"; } if($ans[1]=="ok" && $ans[2]=="ok" && $ans[3]=="ok" && $ans[4]=="ok" && $ans[5]=="ok" && $ans[6]=="ok") $ans[0]="ok"; if($ans[1]=="ng" || $ans[2]=="ng" || $ans[3]=="ng" || $ans[4]=="ng" || $ans[5]=="ng" || $ans[6]=="ng") $ans[0]="ng"; if(!$_POST["q1"] || !$_POST["q2"] || !$_POST["q3"] || !$_POST["q4"] || !$_POST["q5"] || !$_POST["q6"]){ print "<p>回答が正しく選択されていません。<br><a href='".$_SERVER["PHP_SELF"]."'>ここをタップまたはクリックして、戻って</a>やり直してください。</p>"; } if($ans[0]=="ok"){ setcookie("answered","ok",time()+86400*90); print <<<output <html> <head> <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> </head> <body> output; print "<p>選択いただいた回答が真実であることを私達は信じています。<br>是非下の参加申込書をダウンロードして、お送りください。</p>"; print "<a href='sankamoushikomi.pdf'>参加申込書のダウンロード</a>(PDFの閲覧にはアプリが必要になる場合があります。)<br>"; print "送り先は<a href='about_us.html'>私達について</a>を参照してください。"; print "</body></html>"; } if($ans[0]=="ng"){ setcookie("answered","ng",time()+86400*90); print "<p>大変残念ではありますが、ご参加いただくにあたっての必要な要件を満たしていません。<br>最後にアクセスした日から90日を経過すると再度設問が表示されますので、それまでに状況を整えてご準備いただき、ご参加いただけるのを楽しみにしております。</p>"; } exit(); }

エラーメッセージは表示されません。

試したこと

関係なかったですが、有効期間の設定が不適切だったので、調整しました。

補足情報(FW/ツールのバージョンなど)

何も出力する前に行わなければならないとマニュアルに書いてありますが、自分では何も出力しているつもりはありません。
他にも間違っていることがあれば何卒ご教授お願いします。

コメントを投稿

0 コメント