現在ドットインストールにてPHPを勉強中です。
投票結果をDBに格納するというところで作業をしているのですが、何度やっても、
投票結果として"不正な操作です!" としかでません、、
(投票を空にしても、選択してやっても不正な操作ですの画面に遷移します。) 何が原因かわからず困っております。よろしくお願いします。
<?php
ini_set("display_errors", true);
error_reporting(E_ALL);
require_once('functions.php');
require_once('config.php');
session_start();
if($_SERVER["REQUEST_METHOD"] !='POST'){
if(!isset($_SESSION['token'])){
$_SESSION['token']=sha1(uniqid(mt_rand(), true));
//uniqid関数のプレフィックスに当たる部分に mt_rand() を使い、それらをさらにsha1関数で「.(ドット)」を含まない乱数を返すという仕様。
}
}else{
//投稿後 ↓要確認
if(empty($_POST['token']) || $_POST['token'] != $_SESSION['token']){
echo "不正な操作です!";
exit;
}
//エラーチェック
if(!in_array($_POST['answer'], array(1, 2, 3, 4))){
$err = "写真を選択してください";
}
if(empty($err)){
$dbh = connectdb();
$sql = "insert into answers
(answer, remote_addr, user_agent, answer_date, created,modified)
values
(:answer, :remote_addr, user_agent, :answer_date, now(), now())";
$stmt = $dbh->prepare($sql);
$params = array(
":anwer" => $_POST['answer'],
":remote_addr" => $_SERVER['REMOTE_ADDR'],
":user_agent" => $_SERVER['HTTP_USER_AGENT'],
":answer_date" => date("Y-m-d")
);
}
if($stmt->execute($params)){
$msg = "投票ありがとう!";
}else {
$err = "投票は1日1回まで!";
}
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>投票システム</title>
<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<style>
.selected{
border:4px solid red;
}
</style>
</head>
<body>
<?php if(!empty($msg)) : ?>
<P style="color:green"><?php echo h($msg); ?></P>
<?php endif; ?>
<?php if(!empty($err)) : ?>
<P style="color:red"><?php echo h($err); ?></P>
<?php endif; ?>
<h1>テスト</h1>
<form action="" method="POST">
<img src="photo1.jpg" class="candidate" data-id="1">
<img src="photo2.jpg" class="candidate" data-id="2">
<img src="photo3.jpg" class="candidate" data-id="3">
<img src="photo4.jpg" class="candidate" data-id="4">
<p><input type="submit" value="投票する!"></p>
<input type ="text" id="answer" name="answer" value="">
<input type ="hidden" name="token" value="<?php echo ($_SESSION['token']); ?>">
</form>
<script>
$(function(){
$('.candidate').click(function(){
$('.candidate').removeClass('selected');
$(this).addClass('selected');
$('#answer').val($(this).data('id'));
});
});
</script>
</body>
</html>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/06/07 07:55
2015/06/08 00:32
2015/06/27 10:34