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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

800閲覧

PHPを含むHTMLファイルの場所

kurumi1

総合スコア16

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/09/28 09:21

編集2020/09/29 11:55

PHPを含むHTMLファイルの置き場所としてただしいのは

/Applications/XAMPP/htdocs/ でしょうか?

それとも どこでもいいのでしょうか?

下のようにコードがそのまま表示されます

イメージ説明

pdo_form.html

<?php header("Content-type: text/html; charset=utf-8"); if(empty($_POST)) { header("Location: pdo_form.html"); exit(); }else{ //名前入力判定 if (!isset($_POST['yourname']) || $_POST['yourname'] === "" ){ $errors['name'] = "名前が入力されていません。"; } } if(count($errors) === 0){ $dsn = 'mysql:host=localhost;dbname=test5;charset=utf8'; $user = 'root'; $password = 'root'; try{ $dbh = new PDO($dsn, $user, $password); $statement = $dbh->prepare("INSERT INTO name (name) VALUES (:name)"); if($statement){ $yourname = $_POST['yourname']; //プレースホルダへ実際の値を設定する $statement->bindValue(':name', $yourname, PDO::PARAM_STR); if(!$statement->execute()){ $errors['error'] = "登録失敗しました。"; } //データベース接続切断 $dbh = null; } }catch (PDOException $e){ print('Error:'.$e->getMessage()); $errors['error'] = "データベース接続失敗しました。"; } } ?> <!DOCTYPE html> <html> <head> <title>登録画面</title> <meta charset="utf-8"> </head> <body>
<?php if (count($errors) === 0): ?> <p><?=htmlspecialchars($yourname, ENT_QUOTES, 'UTF-8')."さんで登録いたしました。"?></p> <?php elseif(count($errors) > 0): ?> <?php foreach($errors as $value){ echo "<p>".$value."</p>"; } ?> <?php endif; ?> </body>
</html>

です

pdo_form.php

<?php header("Content-type: text/html; charset=utf-8"); if(empty($_POST)) { header("Location: pdo_form.html"); exit(); }else{ //名前入力判定 if (!isset($_POST['yourname']) || $_POST['yourname'] === "" ){ $errors['name'] = "名前が入力されていません。"; } } if(count($errors) === 0){ $dsn = 'mysql:host=localhost;dbname=test5;charset=utf8'; $user = 'root'; $password = '10veikA11#'; try{ $dbh = new PDO($dsn, $user, $password); $statement = $dbh->prepare("INSERT INTO name (name) VALUES (:name)"); if($statement){ $yourname = $_POST['yourname']; //プレースホルダへ実際の値を設定する $statement->bindValue(':name', $yourname, PDO::PARAM_STR); if(!$statement->execute()){ $errors['error'] = "登録失敗しました。"; } //データベース接続切断 $dbh = null; } }catch (PDOException $e){ print('Error:'.$e->getMessage()); $errors['error'] = "データベース接続失敗しました。"; } } ?> <!DOCTYPE html> <html> <head> <title>登録画面</title> <meta charset="utf-8"> </head> <body>
<?php if (count($errors) === 0): ?> <p><?=htmlspecialchars($yourname, ENT_QUOTES, 'UTF-8')."さんで登録いたしました。"?></p> <?php elseif(count($errors) > 0): ?> <?php foreach($errors as $value){ echo "<p>".$value."</p>"; } ?> <?php endif; ?> </body>
</html>

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

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

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

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

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

guest

回答1

0

ベストアンサー

このような質問をしている方が理解できるか非常に不安ですが(調べれば出てくることという前提)

PHPを含むHTMLファイルの置き場所としてただしいのは

/Applications/XAMPP/htdocs/ でしょうか?
それとも どこでもいいのでしょうか?

「要件次第」「設定次第」「設計次第」
一言でいうとこの3つです。

PHPとHTMLでは役割が違うので、「それをどうアクセスさせたいか」「どういう役割をもったファイル(プログラムなのか)」にもよるでしょう。
それに「ドキュメントルートがどこか」にもよります。

ドキュメントルートが仮に/Applications/XAMPP/htdocs/だとして、HTMLファイルをそのままアクセスさせたいのでしたら「その配下で正しい」と言えます。
ブラウザからアクセスできるのはドキュメントルートから先です。

PHPについては「設計次第」が大きく関わってきます。
あくまでサーバ内で動作するので、「どこにおいてもPHPが動くサーバなら動作する」です。
ただし、結局ブラウザからアクセスするのであれば、ドキュメントルート配下に置いたPHPから読み込み(例:include,require)されている必要があります。
多くのフレームワークではドキュメントルート配下にはindex.phpのみがあり、そこから各機能へアクセスするようになっています。

ただ「どこがただしいか」となると「設計次第」になるので、「どこに置いても要件通り動くなら正しい」となります。

HTMLもそのまま出力するのではなく、PHPから読み込ませるような使い方をするのであれば、ドキュメントルート配下に置く必要はありません。

「アプリケーションをどのように動かすか」で決めてください。


蛇足:
MacでXAMPP動かそうとしているのであれば、正しくないわけではないですが、悪手です。
teratail内を見ているとそれでまともに動いている例が希少です。
MacにはMAMP、WindowsにはXAMPP

きちんと環境構築したいのでしたら仮想環境がベターです。


追記:

下のようにコードがそのまま表示されます

teratailでも非常に多く出てます。
[コード そのまま tag:PHP] の検索結果: 1103件

主たる原因は2点。
0. httpで実行してない
0. .htmlにPHPコード書いている(.htmlでPHPが動く設定をしていない←ただ昨今そんなことはしない)

投稿2020/09/28 09:52

編集2020/09/29 11:47
m.ts10806

総合スコア80875

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

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

kurumi1

2020/09/29 10:01

ありがとうございます 調べても出てこない というか 読んでもわからないので 現在 XAMPP MAMP どちらもインストールしてあり その両方のhtdocs配下にhtml phpファイルを置いて http://localhost:8080/project/pdo_form.html でアクセスしてどちらともできません (両方がコードがそのまま表示されます)
m.ts10806

2020/09/29 10:59

>調べても出てこない というか 読んでもわからないので 意味が変わってくるので状況は正確に記載願います。 読む人は何も事情を知らない赤の他人です。 何を読んでわからないのか提示してください。 記事が正しくない可能性だってあります。 もし記事が正しくて理解できないのでしたら、理解できるようにならない限り プログラミングはできるようになりません。 書いたようにしか動かないからです。 >どちらともできません さぁ、正しくインストールされてApacheが正しく起動しているのなら そのURLだとドキュメントルート配下のprojectディレクトリ配下のpdo_form.htmlというファイルがあればそれを見に行きます。 コードがどういう風に書かれてるかわからないですが、 何か特別な設定をしていない限り.htmlファイル内でPHPプログラムは動きません。
kurumi1

2020/09/29 11:39 編集

おっしゃる通りです php html 接続 php html で検索して出てくる上位5記事を読んでもわかりません - 何か特別な設定をしてない限り そうなのですか? では よくサイトでみる htmlにphp別ファイルをactionで指定しているのはどのように実行するのですか?
m.ts10806

2020/09/29 11:44

>で検索して出てくる上位5記事 やりたいことが一切キーワードに含まれていないのでヒットしないのは当然かと思います。 「リクエスト」と「レスポンス」の考え方、「サーバーサイド」「クライアントサイド」の概念から理解する必要がありますが、 PHPはあくまで処理結果を出力しているだけで、ブラウザから実行するからHTMLとして解釈してくれているだけです。コマンド実行するとHTMLとしては解釈しません。 ひとまず・・・「PHPとは」というところから、PHPマニュアルを熟読する必要があるかと思います。 最後に書かれているフォーム送信についても触れられています。 https://www.php.net/manual/ja/index.php 本当に「はじめにー序文」くらいから読む必要があります。 その感じだとコードを打つのはまだ早いですね。
m.ts10806

2020/09/29 11:49

質問に追記しました。 動かすだけならファイル名を pdo_form.html → pdo_form.php としてアクセスすれば良いでしょう(当然、URLも変わる) ただ、これで「動いた」で済ませてしまうと、一生成長しないと思ってください。 厳しめに言うと、プログラミングは身に付きません。 プログラミングの本質は問題解決にあるので、難しくて当然です。 それだけ、きちんと取り扱うためには非常に多くのルールを把握し、守る必要があるのです。
kurumi1

2020/09/29 11:56

pdo_form.php というファイルが同じフォルダ(ディレクトリ )に入っているのですが 大丈夫でしょうか?
m.ts10806

2020/09/29 11:57

>大丈夫でしょうか? どういう設計、構成でアプリケーションを作ろうとしているのか私は知らないので、判断しかねます。
kurumi1

2020/09/29 12:01 編集

pdo_form.html → pdo_form.php としてアクセスする際 重複 しないでしょうか? ファイル名を変える フォルダから取り除け ば大丈夫ですかね
m.ts10806

2020/09/29 12:01

もう一度言いますが、どういう設計、構成でアプリケーションを作ろうとしているのか私は知らないので、判断しかねます。
kurumi1

2020/09/29 12:28 編集

設計としては 素人なので伝わるかわかりませんが データベースにブラウザからデータの挿入 データベースからブラウザに表示をしたいです
m.ts10806

2020/09/29 12:29 編集

>Test です ごめんなさい。意味が分かりません。 質問に提示されている内容と今回のコメントだけでは他者には設計や構成は伝わってません。 どんな熟練者であろうと要件不明瞭な状態では何もできませんよ。 本質問の元の質問には答えました。 結局のところ、根本的な理解をしない限りは前に進めません。PHPマニュアルの基本部分だけでも読み込んでください。
kurumi1

2020/09/29 12:31

My SQL の Test というDatabaseの Test1 というTable の name nchar(6)というカラムに sato というデータを挿入 したいです
m.ts10806

2020/09/29 12:33

>データベースにブラウザからデータの挿入 データベースからブラウザに表示をしたいです それは処理概要であって設計・構成ではありません。 細かいこと言うと、ブラウザがデータを挿入してくれるわけではなく ブラウザから送られてきたリクエストによってサーバー側で処理が行われ そのレスポンスが返されてブラウザに結果を表示させるように「作る」ことになります。 「設計・構成」とは、アプリケーションの目的、画面レイアウト、DB定義、イベントなど もっと詳細に「What」「Why」を詰めたうえで「How」に落とし込んだものになります。 そのうえで「どういうリクエストを送るか」「どういう画面遷移にするか」を考えます。 ファイル名、プログラム名もそのうえで決まります。 たとえ学習のための簡易プログラムであっても、その部分は変わりませんし、意識して作るべきかと思いますが、 それ以前に「リクエスト」「レスポンス」部分、「PHPはどうやって動いているか」など 基礎的な概念を身に着けないことには1歩も進めないままになると思います。 (WordPressでテーマも既存のもので済ませてコード一切見ないなら不要ですが)
m.ts10806

2020/09/29 12:37

ひとまず「解決済み」のままにされているようですし、 基本部分までいくと質問と回答という形式ではおさまりません。 PHPマニュアルの基本部分・導入部分をきちんと確認してから出直されたほうが良いかと思います。
kurumi1

2020/09/29 12:37

端的にいうと SNS と同じ機能をつくりたいです オーナー ユーザー 投稿 それぞれログイン サインアップでわかれ おのおののページでおのおのの投稿をみられる 機能です
m.ts10806

2020/09/29 12:40 編集

>端的にいうと SNS と同じ機能をつくりたいです 既存のプラグインやライブラリ、CMSで済ませられます。 今のまま進めても自力で作れるようにはならないと明言しておきます。 SNSに限らず、一般ユーザーを受け入れるサービスを作るのは簡単ではありません。 セキュリティ要件はもちろん、サーバーのおもりもしなければなりません。 いつだれがどのようにアクセスしてくるかわからないわけですからね。 それに「SNS」って意味が広すぎます。
kurumi1

2020/09/29 12:39

WordPressもテーマが絞られるのであまりすきではないのですが こと細かく設計したいので 自作 というかたちをとっています
kurumi1

2020/09/29 12:40

「What」「Why」 は 教育 のためです
m.ts10806

2020/09/29 12:42

それはご自身の事情なので「そこを知りたい」のではなく「設計ちゃんとできてますか?」です。 提示されたコードに教育云々が入っているわけではないでしょうし、まず目の前の「リクエスト」「レスポンス」部分、「PHPはどうやって動いているか」など 基礎的な概念を身に着けてください。 ここで本質問から離れることを語っていても進まないと思います。
kurumi1

2020/09/29 12:44

それに「SNS」って意味が広すぎます。 そうですね クライアント サーバー Appache リクエスト レスポンス は 把握しています Webサーバー DNSサーバー メールサーバー も 念頭に置いてあります やはりWordPressがおすすめですか サーバーのおもりはレンタルサーバーにしてもらおうとおもっていますが
kurumi1

2020/09/29 12:46

「PHPはどうやって動いているか」 おっしゃるとおりで そこが知りたくて まわっています Webサーバー とは 別 という 観念 は あるのですが PHPサーバー というものを みかけない ですし ききません
kurumi1

2020/09/29 12:48

ただ レンタルサーバー の cgi-bin 配下 に 配置する ということから Webサーバーの内部 という推察はできますが
m.ts10806

2020/09/29 12:49

ですから、「PHPマニュアルの基本部分を確認してきて」とリンクも提示したのですが。
m.ts10806

2020/09/29 12:53

> cgi-bin 配下 に 配置する ということから それはそういう構成・設定になっているサーバーだからです。 今どこにもcgi-binがURLに入るようなサーバーはありません。 teratailだってPHPで作られています。 いずれにしても「リクエストとレスポンス」「サーバーサイドとクライアントサイド」を理解しないことには進めませんよ。 何度も書いてるのですが、読まれたのでしょうか・・・ 兎にも角にも、既に書いたように質問と回答という形で済ませられる内容ではなく、 概念や考え方ならしっかり紹介しているページはいくらでもあります。 本当に自作したいのでしたら、こういうコメントしてる暇を惜しんで読み漁ってください。 teratailの過去質問が参考になることもあるでしょうし。 まあ「自作」も関わり方によっては自分でコード書かなくても済むような「自作」もありますけどね。 要件と規模次第ですがSNSなんて、一般ユーザーが使うサービスを1人で作り上げて保守までするのは無理です。
kurumi1

2020/09/29 12:54

ありがとうございます 確認してきます
kurumi1

2020/09/29 13:06 編集

要件と規模次第ですがSNSなんて、一般ユーザーが使うサービスを1人で作り上げて保守までするのは無理です。 投稿時間がかぶりました
kurumi1

2020/09/29 13:05 編集

読んでいる途中ですが Unix Linux といいますが なぜ ひとつに統一しないのですか? 機能で使い分けているのですか? また バンドル とよくいい 調べるのですが いみがわかりません
m.ts10806

2020/09/29 13:37

どこの話をしているのかさっぱり 本件とも関係なさそうですし、何度も書いてますが、 まずこの質問から離れて自分でやってください。 そこで疑問が出てくるならまた質問を立てればよい話です。 私はあなた専用のメンターでも、こちらはチャットでもありませんよ。 既に書いていますが、質問と回答という範囲でおさまるようなレベルにはないと思ってます。
kurumi1

2020/09/29 13:42

そうですね おっしゃる通りです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問