• ベストアンサー

$_POST["year"]の”が unexpected といわれる。

下記はある入門書の説明用サンプルコードの一部です。 これをインプットし(勿論、半角です)、ブラウザで開こうとしたところ、下から3行目で Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\***\htdocs\***\****\xxx.php on line 32 というエラーが出てしまいます。(yearの“”を取ると次の“mon”で、また、同じく ”day” でも出ます。) $name1=$_POST["name1"]; のname1ではエラーが出ていないのに、何故 $year = $_POST["year"];で unexpected '"', のエラーが出るのでしょうか。 この本のサポートサイトに問い合わせましたが、ナシのつぶてで大変困っています。 どなたか、心当たりがおありましたらヒントやご教示頂ければ有難いです。 環境はWinXP H/E、apache_2.0.50-win32-x86、PHP5.0.1、MSIE6.0 です。 <?php ・・・・・・・・ session_start(); ・・・・・・・・ if(!isset($_SESSION["form1"])){ $_SESSION["form1"]="input"; ・・・・・・・ $name1=""; $name2=""; $year=""; $mon=""; $day=""; }else{ $name1=$_POST["name1"]; $name2=$_POST["name2"]; if((0==strlen($name1))&&(0==strlen($name2))){ $error["name"]["message"]="<br><font color=\"#FF0000\"><名前が未入力です></font>"; $errors++; }else{    $error["name"]["message"]="; } $year = $_POST["year"]; $mon=$_POST["mon"]; $day=$_POST["day"];

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

  • ベストアンサー
  • iwaiwaiwa
  • ベストアンサー率18% (25/137)
回答No.1

下から5行目: $error["name"]["message"]="; の最後の方でシングルクオーテーションがダブルクオーテーションになっていて、 閉じていません、多分。 あとは同じくこの行の頭で全角スペースが2つ入っています。 掲示板用に便宜上入れたものならいいのですが、 通常のプログラムで意味のない全角スペースが 入るとエラーになります。

spindle
質問者

お礼

ご指摘の通りでした。 本の印刷が「'''」となっていて真ん中の「’」が少し太くなっていました。印刷汚れかと思っていたのですが、「””」でした。修正したところ、うまく解決できました。有難うございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • ttyp03
  • ベストアンサー率28% (277/960)
回答No.2

下から5行目、 $error["name"]["message"]="; のイコールの後ろの文字列が中途半端に終わっているからだと思います。

spindle
質問者

お礼

有難うございました。「””」で閉じたら無事解決できました。今後、同様のエラーが出たときの原因探しの方法の一つにします。本当に有難うございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • リセットボタンとエラー画面

    PHPを始めて1週間ほどのド初心者です。 本を買って勉強中ですが、本やネットでも調べてもわからないので 質問させて頂いています。 あるところからサンプルを引っ張ってきてフォームを作るところです。↓ session_start(); $errors = 0; if(!isset($_SESSION["form1"])){ $_SESSION["form1"] = "input"; $error["name"]["message"] = "<br><font color=\"#FF9900\">《必須》</font>"; $error["birt"]["message"] = ""; $error["sexx"]["message"] = "<br><font color=\"#FF9900\">《必須》</font>"; $name1 = ""; $name2 = ""; $sex = ""; $year = ""; $mon = ""; $day = ""; }else{ $name1 = stripslashes( $_POST["name1"] ); $name2 = stripslashes( $_POST["name2"] ); if((0==strlen($name1))&&(0==strlen($name2))) { $error["name"]["message"] = "<br><font color=\"#FF0000\">《名前が未入力です》</font>"; $errors++; } elseif(0==strlen($name1)) { $error["name"]["message"] = "<br><font color=\"#FF0000\">《性が未入力です》</font>"; $errors++; } elseif(0==strlen($name2)) { $error["name"]["message"] = "<br><font color=\"#FF0000\">《名が未入力です》</font>"; $errors++; } else { $error["name"]["message"] = ""; } $year = $_POST["year"]; $mon = $_POST["mon"]; $day = $_POST["day"]; if( (($year<1900)||(date("Y")<$year)) || (($mon<1)||(12<$mon))|| (($day<1)||(31<$day)) ) { $error["birt"]["message"] = "<br><font color=\"#FF0000\">《生年月日が無効です》</font>"; $errors++; } else { $error["birt"]["message"] = ""; } $sex = $_POST["sex"]; if(!isset($_POST["sex"])) { $error["sexx"]["message"] = "<br><font color=\"#FF0000\">《性別が未選択です》</font>"; $errors++; } else { $error["sexx"]["message"] = ""; } if(0 == $errors){ $_SESSION["form1"] = "checked"; } } ?> ~~~~~~~中略~~~~~~~~ echo "<tr><td colspan=2 align=center><input type=submit name=submit value=\"申 込\">  \n". "<input type=reset name=cancel value=\"クリア\"></td></tr>\n". "</table> ~~~~~~~以降略~~~~~~~ 配布されているサンプルなのでこのままUPすれば正常に動きます。 フォームに何も入力しないで送信ボタンを押すとエラー表示されます。 何か入力をしてリセットを押すと、入力された値はリセットされて消えますが、 エラー表示がそのままになってしまいます。 つまり、エラー表示されたままなので、これをリセットボタンを押すことにより 初期の(エラー表示されていない)状態に戻したいのです。 $reset = true; などの例文を拝見しても難しくて解決できません(T-T) 何か良い方法があったら教えて下さい。 宜しくお願いします。

    • 締切済み
    • PHP
  • $error["name"]["message"]の“がunexpectedといわれる

    昨日のNo.1576647の続きでお尋ねします。 下記は昨日お尋ねしたコードの下半分です。これをインプットしブラウザで開こうとしたところ、またもや9行目の["name"]["message"]で Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in :\***\htdocs\***\****\xxx.php on line 66というエラーが出ます。(nameと messageの“”を取ると13行目の["birt"]["message"] で、同じエラーが出ます。)昨日ご指導願った要領で“の洩れはないか、必死に探しましたが見つけることができません。今度は果たして異なった原因なのでしょうか。類似の問題を決して安易にお尋ねするつもりではないのですが、私的には刀折れ矢つきた感じになってしまいました。もし、ヒントがありましたらご教示いただければ幸いです。 <html><head>・・・ <title>TEST</title></head><body> <?php if("checked" != $_SESSION["form1"]){ echo "<form method=post action=****.php><table border=\"1\">\n". "<tr><td colspan=2 align=\"center\">名前と生年月日を入力</td></tr>\n". "<tr><td colspan=2></td></tr>\n"; echo "<tr><td valign=\"top\">名前:{ $error["name"]["message"]} </td><td>". " <input type=text name=name1 value=\"$name1\"> ". " <input type=text name=name2 value=\"$name2\"><br>例:東京花子 </td></tr>\n". " <tr><td colspan=2></td></tr>\n"; echo "<tr><td>生年月日:{ $error["birt"]["message"]} </td><td>\n". "<input type=text name=year size=5 value=\"$year\">年\n". "<select name=mon><option".(""==$mon?" selected":"")."></option>\n"; 以下略

    • ベストアンサー
    • PHP
  • syntax error, unexpected '}' というエラーの対処法

    PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33 というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか? ・game.php <html> <head> <title>数当てゲーム</title> </head> <body> <h1 style="background:#cccccc">数当てゲーム</h1> <form method="POST" action="game.php"> 1~100までの数を入力してください <input type="text" name="answer" size="5" maxlength="3" /> <input type="sbumit" value=回答" /> </form> <hr /> <?php session_start(); if(is_null($_SESSION['answer'])){ mt_stand(microtime()*1000000); $_SESSION['answer']=mt_rand(1,100); $_SESSION['game_cnt']=0; } if($_POST['answer']!=""){ $_SESSION['game_cnt']++; if($_session['answer']==$_POST['answer']){ print("おめでとうございます". $_SESSION['game_cnt']."回で正解しました!"); session_destroy(); }else{ if($_SESSION['answer']>$_POST['answer']){ print("もう少し大きいです。"); }else print("もう少し小さいです。"); } } } ?> </body> </html> それとこの間違えたところをなおしたあとはいつもコンピュータを再起動しないと修正したところが適用されないのですがほかに方法はないですか?基本的な質問ですいません。

    • ベストアンサー
    • PHP
  • ?> で終わっているのにunexpected $end

     以下のようなスクリプトを作成したのですが、 Parse error: syntax error, unexpected $end in (アドレス) on line 61 とエラーが出てしまいます。色々といじってみましたが、ちゃんと表示されません。どこがおかしいのでしょうか? <html> <head> <title></title> <?php if(empty($_POST[sentpass])){ setcookie("pass"); print <<<_DRK_ </head><body> <p align="center"> パスワードを入力してください。<br><br> <form name="sentpass" action="index.php" method="post" target="_self"> <input></form></p> _DRK_; } else { setcookie("pass","$_POST[sentpass]"); print("<META http-equiv=\"refresh\" content=\"0; URL=index.php\"></head><body>"); } $password = "sample"; if($_COOKIE = $password){ print <<<_EOT_ <em><font size="6">Webサイトの設定</font></em><br><br> 編集する項目を選択してください。<br><br> Webサイト全体の設定(文字色など)<br><br>          (以下略) _EOT_; } else { print <<<_CDR_ パスワードが違っています。もう一度パスワードを入力してください。<br><br> <form name="sentpass" action="index.php" method="post" target="_self"> <input></form></p> _CDR_; } ?> </body></html>  ・・・よろしくお願いします。  真に申し訳ないのですが、多忙のためお礼が若干遅れると思います。すみません・・・。

    • ベストアンサー
    • PHP
  • header(Location: next.php) だとPOSTした値が渡らない?

    文末は(だいぶ端折ってますが), (1) エラーがあればエラー表示, (2) エラーがなければnext.phpに飛ぶ という動作をするのですが, next.php 内に echo $_POST["Name"]; とか echo $_POST["reg"]; とか書いても valueの中身が渡ってきていません. header("Location: next.php"); で飛ばすとだめなのでしょうか. http://oshiete1.goo.ne.jp/qa2706500.html でも,#2さんのアドバイスのようにしようとしましたが, #1さんのご教示のように,セッションを利用するしかないですか? ちょっとセッションで値の渡し方がチンプンカンプンなのですが・・・ <?php session_cache_limiter('none'); session_start(); header("Cache-control:no-cache"); header("Pragma:no-cache"); $errFlg=false; if ( $_POST["reg"] == "" ) $errFlg = true; if ( !$errFlg ) { if ( $_POST["Name"] == "" ) { $errFlg = true; $errStr["Name"] = "未入力"; } } if ( $errFlg ) { ?> <html><body> <form method="post" action="<?php $_SERVER["PHP_SELF"] ?>"> <?= $errStr["Name"] ?></td> <input type="text" name="Name" value="<?php echo $_POST["Name"]; ?>"> <input type="submit" name="reg" value="登録"></td> </form> </body></html> <?php } else { header("Location: next.php"); } ?>

    • ベストアンサー
    • PHP
  • 何故unexpected ';'が出るのでしょうか

    お尋ねします。以下のスクリプトを書いてブラウザで表示しようとすると Parse error: syntax error, unexpected ';' in C:\xxx om\test.php on line 11   とエラーが出ます。 11行目は ?> と書いてあります。 <?php ~ ?> の対応関係も合っていると思います。 何故、unexpected ';' エラーが出るのでしょうか? どこが間違っているのでしょうか? 不具合修正はどのようにすれば良いか、ご教示いただければ有難いです。よろしくお願いいたします。 <html> <body> <?php if ( $_REQUEST[ "SUBMIT" ] != "" ){ $month=$_POST['month']; $day=$_POST['day']; $memo=$_POST['memo']; if( ($month=='') | ($day=='')){ echo                  ?>      ←ここでsyntax エラー <HTML><BODY> <FONT COLOR="RED"><B>空欄です</B><BR><BR> </FONT><BR></BODY></HTML> <?php exit(); } } ?> </body></html>

    • ベストアンサー
    • PHP
  • $_POSTのものを$_GETとして使うのはなぜ?

    http://www.phppro.jp/school/phpschool/vol19/2 こちらの講座にあるサンプルコードで分からないところがあります。 schedule_edit.phpのサンプルでは if (isset($_POST["year"]) && is_numeric($_POST["year"]) && $_POST["year"] > 2000) { $year = $_POST["year"]; <form action="schedule_edit.php" method="post"> <input type="text" name="year" id="schedule-year" value="<?php print(htmlspecialchars($year, ENT_QUOTES)); ?>" /> <label for="schedule-year" id="label-year">年</label> formで入力されたデータはhtmlspecialchars($year, ENT_QUOTES)の$yearに格納され、 $_POST["year"]としてデータが渡り、 php側で$year = $_POST["year"];のように$_POST["year"]のデータが$yearに格納し直されています。わざわざ格納し直す理由も分からないのですが、一番知りたいところは schedule_list.phpのサンプル内ではPOSTでなくGETで渡されているところです。 if ($schedule_date == date("Ymd", mktime(0, 0, 0, $_GET["month"], $_GET["day"], $_GET["year"]))) $_POST["day"]ではなぜだめなのか分かりません。 この$_GET["year"]はschedule_edit.phpの$_POST["year"]を見ているわけではないのでしょうか。

    • ベストアンサー
    • PHP
  • php $_SESSIONで値が消える。

    いつもお世話になり誠にありがとうございます。 標記の件。 インプット画面ー>確認画面ー>戻るー>インプット画面 インプット画面に戻った時、どうしても最初のインプット画面で打った内容が消えてしまいます。 プログラムを診て、誤りを指摘して頂けないでしょうか? どうぞよろしくお願い致します。           記 <?php session_start(); $mode = 'input'; if( isset($_POST['back']) && $_POST['back'] ){ //何もしない } else if( isset($_POST['confirm']) && $_POST['confirm'] ){ $_SESSION['name'] = $_POST['name']; $_SESSION['email'] = $_POST['email']; $_SESSION['category']= $_POST['category']; $_SESSION['message'] = $_POST['message']; $mode = 'confirm'; } else if( isset($_POST['send']) && $_POST['send'] ){ $mode = 'send'; } else { $_SESSION['name'] =""; $_SESSION['email'] =""; $_SESSION['category']=""; $_SESSION['message'] =""; } ?> <!DOCTYPE html> <html lang="ja"> <head> </head> <body> <div class="v_line_fix"> <h1>Blog K・T</h1> <h2><a href="index.html">トップページ</a></h2> <?php if( $mode=='input'){ ?> <form method=post> お名前(ニックネーム)<br> <input type="text" name="name" value="<?php echo $_SESSION['name'] ?>"><br> Eメール<br> <input type="email" name="email" value="<?php echo $_SESSION['email'] ?>"><br> カテゴリー<br> <input type="text" name="category" value="<?php echo $_SESSION['category'] ?>"><br> 本文<br> <textarea style="font-size:1.5em;" cols="30" rows="80" name="message"><?php echo $_SESSION['message'] ?></textarea><br> <input type="submit" name="confirm" value="確認" /> </form> <?php }else if( $mode=='confirm'){ ?> <!--確認画面--> <form method="post"> <?php echo $_SESSION['name']?><br> <?php echo $_SESSION['email']?><br> <?php echo $_SESSION['category']?><br> <br> <?php echo nl2br($_SESSION['message'])?><br> <input type="submit" name="back" value="戻る"/> <input type="submit" name="send" value="送信"/> } </form> <?php } else { ?> <!--完了画面--> <?php } ?> </body> </html>

    • ベストアンサー
    • PHP
  • 【超初歩】$_POST["Var"]とかダブルクォーテーションの書き方が間違ってますか?

    $sql = "UPDATE Enquete SET MyName = \"$_POST['MyName']\""; という書き方が, Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\temp\temp.php on line 10 みたいな扱いを受けてしまうのはなぜでしょうか. $Name = $_POST["MyName"]; $sql = "UPDATE Enquete SET MyName = \"$Name\""; とすればエラーにならないですが.

    • ベストアンサー
    • PHP
  • ラジオボタンをsessionで使いたい

    sessionのソースコードについて教えてください。 テキストボックスに記入されたデータは、下記のソースコードで取り出せるのですが、 ラジオボタンを使用して、選択されたボタンに指定された「value」を取り出したいのですが、sessionの記述が解りません。 session_start(); if($_POST['data']!=""){ $_SESSION['year']=$_POST['year']; } print "<FORM action=\"sample.php\" method=\"post\"> <INPUT size=\"10\" type=\"text\" name=\"year\" value=\"{$_SESSION['year']}\">\n"; print "<input type=\"submit\" name=\"data\" valu=\"表示 \"></FORM>\n"; 宜しくご教示お願い致します。

    • 締切済み
    • PHP
このQ&Aのポイント
  • MFC-9460CDNのトナーカートリッジ交換後にトナー交換のメッセージが消えないトラブルが発生しています。手順通りにトナーカートリッジを取り替えても解消されないため、原因を探っています。
  • 問題のあるトナーカートリッジの可能性も考えられますが、他にも保存されたデータや設定がトラブルの原因となっている可能性もあります。トナー交換時にはデータや設定のバックアップを取り、一度プリンターを初期化してみることをおすすめします。
  • もしトナー交換後にメッセージが消えない場合は、ブラザーサポートセンターに問い合わせることも考えましょう。製品の仕様やトナーカートリッジの取り扱い方法について専門家からのアドバイスを受けることで、トナー交換トラブルの解決策が見つかるかもしれません。
回答を見る

専門家に質問してみよう