こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

phpのエラーについて

phpでメールフォームを作っています。

メールフォーム(1)、(2)、(3)と3つ作っています。

(2)で確認して記入内容に間違いがなれけば送信して(3)を表示。
間違っていたら(1)に戻るというものです。

確認するページ(2)の記述でParse error: syntax error, unexpected T_STRING in……とエラーが出ます。

その問題の行は、セッションを開始したすぐ下の行の

die('不正アクセスの疑いがあります。');

という部分です。

この行と、それより以前・以後を何度も確認しましたがエラーの原因となるものが発見できません……

PHP初心者なのでもうお手上げです><
どなたかご教授よろしくお願いします!!!

レンタルサーバーはヘテムルでphpは5.2.8です。

<?php

function checkInput($var){
if(is_array($var)){
return array_map('checkInput', $var);
} else {
if(get_magic_quotes_gpc()){
$var = stripslashes($var);
}

if(preg_match('/\0/', $var)){
die('不正な入力です。');
}

if(!mb_check_encoding($var, 'UTF-8')){
die('不正な入力です。');
}
return $var;
}
}

session_start();

$_POST = checkInput($_POST);

if(isset($_POST['ticket']) && isset($_SESSION['ticket'])){
$ticket = $_POST['ticket'];
if(!in_array($ticket, $_SESSION['ticket'])){
die('不正アクセスの疑いがあります。'); //この行がエラーとなります。
}
}else{
die('不正アクセスの疑いがあります。');
}

$name = isset($_POST['name']) ? $_POST['name'] : NULL ;
$email= isset($_POST['email']) ? $_POST['email'] : NULL ;
$name = isset($_POST['comment']) ? $_POST['comment'] : NULL ;

$error = array();

if(trim($name) == ''){
$error[] = 'お名前は必須項目です。';
} else if(mb_strlen($name) > 100){
$error[] = 'お名前は100文字以内でお願いします。';
}

if(trim($email) == ''){
$error[] = 'メールアドレスは必須項目です。';
} else {
$pattern = '/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/iD';
if(!preg_match($pattern, $email)){
$error[] = 'メールアドレスの形式が正しくありません';
}
}

if(trim($comment) == ''){
$error[] = 'コメントは必須項目です。';
} else if(mb_strlen($comment) > 500){
$error[] = 'コメントは500文字以内でお願いします。';
}

$_SESSION['name'] = $name;
$_SESSION['email'] = $email;
$_SESSION['comment'] = $comment;
$_SESSION['error'] = $error;

if(count($error) > 0) {
$dirname = dirname($_SERVER['SCRIPT_NAME']);
$dirname = dirname == DIRECTORY_SEPARATOR ? '' : $dirname;
$uri = 'http://' .$_SERVER['SERVER_NAME'] .
$dirname . '/○○.php';
header('HTTP/1.1 303 See Other');
header('Location: ' . $uri);
} else {
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>確認フォーム</title>
</head>

<body>

<div id="form">

<p>以下の内容でよろしければ送信ボタンを押してください。</p>

<dl>
<dt>お名前:</dt>
<dd><?php echo h($name);?></dd>
</dl>

<dl>
<dt>メールアドレス:</dt>
<dd><?php echo h($email);?></dd>
</dl>

<dl>
<dt>コメント:</dt>
<dd><?php echo nl2br(h($comment));?></dd>
</dl>

<form action="thank.php" method="post">
<input type="hidden" name="ticket" value="<?php echo h($ticket);?>" />
<input type="submit" name="submit" value="送信する" />
</form>
</div>
</body>
</html>
<?php
}

function h($string) {
return htmlspecialchars($string, ENT_QUOTES);
}
?>

投稿日時 - 2009-08-12 22:33:27

QNo.5202725

すぐに回答ほしいです

質問者が選んだベストアンサー

こんにちは。私もコピーして実行したら、同じ場所でエラーが出ました。結論から言うと、文末のセミコロンが全角です。ここ以外にも数箇所ありました。また文字列を接続するドットも全角になっている箇所があります。

私も初心者のころはよくやりましたし、誰もが通る道なので、気にしすぎることはありませんが、今度からは気をつけてくださいね。

投稿日時 - 2009-08-12 23:15:56

お礼

ご回答ありがとうございます!
ご指摘いただいた部分を修正したら動作しました!!

まるで先輩に優しく指導していただいた感じです。
speedsrtarさんのりっぱな人柄を感じます。

本当にありがとうございました。

ただ、動作はするけどあと一個だけ妙なものが表示されるので、それを頑張って解決してみます!

投稿日時 - 2009-08-13 17:26:27

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問