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

解決済みの質問

コードの何が間違っているのか分からない(PHP)

●質問の主旨

コードの何が間違っているのかよくわからない。
(check.php)のファイルで、
print'<input type="hidden" name="nickname" value="'$nickname.'">';
の行がsyntaxerrorとして、返されるがなぜそうなるのか分からない
(マニュアル本に記述して、スペルミスもチェックしているのですが)

何かお気づきのかた、ご教示願います。


●質問の補足


添付の画像のように名前、メールアドレス、ご意見を入力してもらう
フォームをとして作りました(index.html)

すべてのフォームに入力がされているかどうかチェックし、
(check.php)

サンクスページを返すようにしました
(thanks.php)


●環境

Windows8
XAMMP(ローカル開発環境)


●コード

(index.html)

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>PHPの基礎</title>
</head>
<body>
<form method="post" action="check.php">
<p>あなたの名前を入力してください</p>
<input name="nickname" type="text" style="width:100px">
<p>メールアドレスを入力してください</p>
<input name="email" type="text" style="width:200px">
<p>ご意見をお聞かせください</p>
<input name="goiken" type="text" style="width:300px"><br/>
<input type="submit" value="送信">
</form>
</body>
</html>


(check.php)

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>PHPの基礎</title>
</head>
<body>
<?php

$nickname = $_POST['nickname'];
$email = $_POST['email'];
$goiken = $_POST['goiken'];

$nickname = htmlspecialchars($nickname);
$email = htmlspecialchars($email);
$goiken = htmlspecialchars($goiken);

if ($nickname == '') {
print '名前が入力されてません!<br/>';
} else {
print 'ようこそ!';
print $nickname;
print 'さま';
print '<br/>';
}

if ($email == '') {
print 'emailが入力されてません!<br/>';
} else {
print 'メールアドレス';
print $email;
print '<br/>';
}

if ($goiken == '') {
print 'ご意見が入力されてません!<br/>';
} else {
print 'ご意見';
print $goiken;
print '<br/>';
}

if($nickname == '' || $email == '' || $goiken == '') {
print'<form>';
print'<input type="button" onclick="history.back()" value="戻る">';
print'</form>';
} else {
print'<form method="post" action="thanks.php">';
  print'<input type="hidden" name="nickname" value="'$nickname.'">';
print'<input type="hidden" name="email" value="'.$email.'">';
print'<input type="hidden" name="goiken" value="'.$goiken.'">';
print'<input type="button" onclick="history.back()" value="戻る">';
print'<input type="submit" value="OK!">';
print'</form>';

}
?>
</body>
</html>


(thanks.php)


<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>PHPの基礎</title>
</head>
<body>
<?php
$nickname=$_POST['nickname'];
$email=$_POST['email'];
$goiken=$_POST['goiken'];
print 'ご意見ありがとうございました!';

print $nickname;
print '様<br/>';
print 'ご意見ありがとうございました<br/>';
print '頂いたご意見『';
print $goiken;
print '』<br/>';
print $email;

?>
</body>
</html>

投稿日時 - 2013-03-23 13:20:12

QNo.8007447

すぐに回答ほしいです

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

そちらの提示してあるコードって、元々のコードのコピペですよね?

んで、俺が更に 提示してあるコードをEclipseにコピペしてみました。

エラーの出てる行の先頭に「全角スペース」入ってますが、これのせいでは?

投稿日時 - 2013-03-23 15:24:40

お礼

bm_hiroさま
ご回答ありがとうございます。

>「全角スペース」入ってますが、これのせいでは?

これのせいでした。
全角スペースを消すと、
thanks.phpが、意図通りに動きました!!!

投稿日時 - 2013-03-23 16:48:50

ANo.4

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

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

回答(5)

ANo.5

#4の人が言うように全角スペースかもしれませんね。

> あと 2の人にツッコむと、多分 printとシングルクォートの間に
> 半角スペースがあろうとなかろうと動作に変わりはないはずです。
>
知りませんでした。
ちょっと調べてみましたが、確かに動作に違いはないように見えますね。
でも、
print1;
print 1;
これだと動作違いました。

投稿日時 - 2013-03-23 15:33:34

お礼

Gaffgarionさま
ご回答ありがとうございます。

全角スペースを消すと、
thanks.phpが、意図通りに動きました!!!

投稿日時 - 2013-03-23 16:49:30

ANo.3

原因は既に回答されてますけど、ピリオド抜けてますね。

syntax は単純な構文の間違いだから、Eclipseとか使うと、こんなミスしなくなりますよ。
Eclipseのオートフォーマットが快適すぎて乱用してます。

あと 2の人にツッコむと、多分 printとシングルクォートの間に半角スペースがあろうとなかろうと動作に変わりはないはずです。

投稿日時 - 2013-03-23 14:10:11

補足

「.」を入れてみましたが、
同じ行にsyntax errorが表示されます。
他に何かお気づきの点はございますでしょうか?

投稿日時 - 2013-03-23 14:56:01

お礼

bm_hiroさま
ご回答ありがとうございます。
補足も見ていただければ助かります。

投稿日時 - 2013-03-23 14:55:39

ANo.2

> print'<input type="hidden" name="nickname" value="'$nickname.'">';
>
コードの書き写し時のミスかもしれませんが、以下が間違ってます。
「print」と「'<input」の間の半角スペースがない
「 value="'」と「$nickname」の間の「.」がない

投稿日時 - 2013-03-23 13:37:34

お礼

Gaffgarionさま
ご回答ありがとうございます。
補足も見ていただければ助かります。

投稿日時 - 2013-03-23 14:55:15

ANo.1

Wr5

PHPは詳しくないのですが…

http://secretaccess.seesaa.net/article/257011108.html
で、ピリオドを使って文字列を~というのでしたら、
>print'<input type="hidden" name="nickname" value="'$nickname.'">';
$nicknameの前にピリオドなくてもOKなんですか?

投稿日時 - 2013-03-23 13:36:23

お礼

Wr5さま
ご回答ありがとうございます。
補足も見ていただければ助かります。

投稿日時 - 2013-03-23 14:53:13

あなたにオススメの質問