質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

993閲覧

1行目メモを入力して送信しても、次のページがエラーになる

bitcoiner2045

総合スコア47

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/08/01 03:27

1行目メモを入力して送信すると、次のページでエラーになります。
エラー該当箇所の$url = "http://" . $_SERVER[ 'HTTP_HOST' ] . dirname($_SERVER[ 'PHP_SELF' ]);を見ても何が間違っているのかがわかりません。お手数おかけしますが、ご回答頂けると幸いです。宜しくお願いします。

エラー文

[01-Aug-2018 03:17:46 UTC] PHP Parse error: syntax error, unexpected 'HTTP_HOST' (T_STRING), expecting ',' or ';' in /Applications/MAMP/htdocs/write_memofile.php on line 57

イメージ説明
イメージ説明
input_memo.php

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>1行メモの入力</title> <link href="../../css/style.css" rel="stylesheet"> <style type="text/css"> input.memofield {width:300px;} </style> </head> <body> <div> <form method="POST" action="write_memofile.php"> <ul> <li><label>memo:<input name="memo" class="memofield" placeholder="メモを書く"></input></label></li> <li><input type="submit" value="送信する"></li> </ul> </form> </div> </body> </html>

write_memofile.php

<?php //POSTされたテキスト文を取り出す if (empty($_POST[ "memo" ])) { //POSTされた値がない時(0の場合も含む) //リダイレクト(メモ入力ページへ戻る) $url = "http://" . $_SERVER[ 'HTTP_HOST' ] . dirname($_SERVER[ 'PHP_SELF' ]); header("HTTP/1.1 303 See Other"); header("Location:" . $url . "/input_memo.php"); exit(); } //ファイルに書き込むストリングを作る $memo = $_POST[ "memo" ]; $date = date("Y/n/j G:i;s", time()); $newdata = $date. " " . $memo; try { //ワークファイルのファイルオブジェクト(新規書き込み) $workingfileObj = new SplFileObject("working.tmp", "wb"); //新しいメモをワークファイルに書き込む $workingfileObj->flock(LOCK_EX); $workingfileObj->fwrite($newdata); $workingfileObj->flock(LOCK_UN); } catch (Exception $e) { echo '<span class="error">エラーがありました。</span><br> echo $e->getMessage(); exit(); } //元ファイル $filename = "memo.txt"; //元ファイルがあるかどうか確認する if (file_exists($filename)) { //元ファイルのファイルオブジェクト(読み込み専用モード) $fileObj = new SplFileObject($filename, "rb"); //元データを読み込む $fileObj->flock(LOCK_SH); $olddata = $fileObj->fread($fileObj->getSize()); $fileObj->flock(LOCK_UN); //古いデータを作業ファイルに追記する $olddata = "\n" . $olddata; $workingfileObj->flock(LOCK_EX); $workingfileObj->fwrite($olddata); $workingfileObj->flock(LOCK_UN); //元ファイルを閉じる $fileObj = NULL; //元ファイルを削除する unlink($filename); } //作業ファイルをクローズする $workingfileObj = NULL; //作業ファイルをリネームする rename("working.tmp", $filename); //リダイレクト(メモを読むページへ) $url = "http://" . $_SERVER[ 'HTTP_HOST' ] . dirname($_SERVER[ 'PHP_SELF' ]); header("HTTP/1.1 303 See Other"); herdar("Location:" . $url . "/read_memofile.php"); ?>

read_memofile.php

<?php require_once("util.php"); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>メモを読み込む</title> <link href="../../css/style.css" rel="stylesheet"> </head> <body> <div> <?php $filename = "memo.txt"; try { //ファイルオブジェクトを作る(rb読み込み専用) $fileObj = new SplFileObject($filename, "rb"); } catch (Exception $e) { echo '<span class="error">エラーがありました。</span><br>'; echo $e->getMessage(); exit(); } //データを読み込む $fileObj->flock(LOCK_SH); $data = new LimitIterator($fileObj, 0, 5); foreach ($data as $key => $value) { //01~05,ストリング,改行 echo sprintf("%02d: %s\n" , $key+1, es($value)), "<br>"; } $fileObj->flock(LOCK_UN); echo "<hr>", '<a href="input_memo.php">メモ入力ページへ</a>'; ?> </div> </body> </html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

marshmallowy

2018/08/01 04:00

echo '<span class="error">エラーがありました。</span><br>じゃなくて、echo '<span class="error">エラーがありました。</span><br>'; じゃない
bitcoiner2045

2018/08/01 04:25

解決できました。ありがとうございます。
guest

回答1

0

自己解決

echo '<span class="error">エラーがありました。</span><br>';

header("Location:" . $url . "/read_memofile.php");

が間違っていたので修正し解決。

投稿2018/08/01 04:26

bitcoiner2045

総合スコア47

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問