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

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

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

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

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

HTML

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

解決済

HTMLからPOSTで送った値がPHPでは空になっている

reiya_yukkuri
reiya_yukkuri

総合スコア22

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

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

HTML

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

4回答

0評価

0クリップ

330閲覧

投稿2022/07/04 02:42

HTMLからPOSTで送信したデータがphpでは空になっている...

php初心者です。
ある程度理解したので自作のブログ投稿システムを作ってみたのですがhtmlからPOSTで送ったデータがphpでは殻になっています。
どうしたら良いのでしょうか?

new.html

<html> <body> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="description" content=""> <meta name="author" content=""> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="icon" href="homepage.ico"> </head> <form action="http://localhost/makefile.php" method="POST"> <label>タイトル名</label><br> <input type="text"class="title" name="title"><br/> <label>本文</label><br> <textarea class="text" name="honbun" rows="20" cols="200"></textarea> <table> <tr> <th><label>タイトルカラー</label></th> <td><input type="color" name="titlecolor"></td> </tr> <tr> <th><label>本文の文字色</label></th> <td><input type="color" name="honbuncolor"></td> </tr> <tr> <th><label>バックカラー</label></th> <td><input type="color" name="backcolor" value="#FFFFFF"></td> </tr> <tr> <th><label>フォント</label></th> <td><input type="text" name="font"></td> </tr> <tr> <th><label>フォントサイズ</label></th> <td><input type="text" name="fontsize"></td> </tr> <tr> <th><label>テンプレートファイル</label></th> <td><input type="file" name="template"></td> </tr> </table> <center><input type="submit" value="送信"></center> </form> <style> label { margin-left: 30%; } .text{ margin-left: 10%; } .title { margin-left: 29%; } textarea { font-family: '游明朝'; font-weight: bold; } table { margin-left: 15%; } </style> </body> </html>

なお、ローカル環境で実行すると成功するのですがサーバー環境で実行すると失敗します

makefile.php

<html> <head> <title>ブログ作成</title> <meta charset="utf-8"> </head> <body> <?php if (!empty($_POST)) { if ($_POST["honbun"] != "") { echo $_POST["honbun"] } } if (isset($_POST['template'])) { $template = $_POST['template']; } else { $template = 'template.php';} if (isset($_POST['title'])) { $pagetitle = $_POST['title']; } else { $pagetitle = 'デフォルト'; } if (isset($_POST['honbun'])) { $honbun = $_POST['honbun']; $honbuncolor = $_POST['honbuncolor']; $titlecolor = $_POST['titlecolor']; $backcolor = $_POST['backcolor']; $font = $_POST['font']; $fontsize = $_POST['fontsize']; $honbun = htmlspecialchars($honbun); $honbun = str_replace('./','<b>',$honbun); $honbun = str_replace('/.','</b>',$honbun); $honbun = str_replace('.!b','<big>',$honbun); $honbun = str_replace('.b!','</big>',$honbun); $honbun = str_replace('!b','<big><big><big><big><big><big><big><big><big><big>',$honbun); $honbun = str_replace('b!','</big></big></big></big></big></big></big></big></big></big>',$honbun); $honbun = nl2br($honbun); $filename = rand( 1000000, 9999999) . ".html"; // ※4 テンプレートファイルの読み込み $contents = file_get_contents( $template); // ※5 タイトルと記事本文を挿入 $contents = str_replace( "<%PAGETITLE>", htmlspecialchars($pagetitle), $contents); $contents = str_replace( "<%PAGECONTENTS>", $honbun, $contents); $contents = str_replace('<%honbuncolor>',$honbuncolor,$contents); $contents = str_replace('<%titlecolor>',$titlecolor,$contents); $contents = str_replace('<%backcolor>',$backcolor,$contents); $contents = str_replace('<%font>',$font,$contents); $contents = str_replace('<%fontsize>',$fontsize,$contents); $contents = str_replace("<%filename>",$filename,$contents); $handle = fopen($filename,'w'); fwrite($handle,$contents); fclose($handle); echo "<center><b>".$pagetitle. "<b>の投稿が完了しました</center>"; echo "<a href='".$filename."'>".$pagetitle."<a>"; } else { echo "フォームから記事の内容を送信してください。"; } ?> </body> </html>

ブラウザの開発者モードでネットワークを見てみるとちゃんと送信されています。
イメージ説明
phpからPOSTを確認すると配列自体は受け取れていますが値がありません。
イメージ説明
調べた限りの解決策を試しましたが効果がありません
どうすればいいのでしょうか?

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

hoshi-takanori

2022/07/04 05:54 編集

form の action が localhost になってますが、サーバーのアドレスに書き換えましたか? (相対パスの方が良いかも。)
reiya_yukkuri

2022/07/04 06:47

ローカル環境においてあったファイルを載せてしまいました サーバー環境においてあるファイルは以下のとおりです ```new.html <html> <body> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="description" content=""> <meta name="author" content=""> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="icon" href="homepage.ico"> </head> <form action="http://reiyayukkuri.php.xdomain.jp/makefile.php" method="POST"> <label>タイトル名</label><br> <input type="text"class="title" name="title"><br/> <label>本文</label><br> <textarea class="text" name="honbun" rows="20" cols="200"></textarea> <table> <tr> <th><label>タイトルカラー</label></th> <td><input type="color" name="titlecolor"></td> </tr> <tr> <th><label>本文の文字色</label></th> <td><input type="color" name="honbuncolor"></td> </tr> <tr> <th><label>バックカラー</label></th> <td><input type="color" name="backcolor" value="#FFFFFF"></td> </tr> <tr> <th><label>フォント</label></th> <td><input type="text" name="font"></td> </tr> <tr> <th><label>フォントサイズ</label></th> <td><input type="text" name="fontsize"></td> </tr> <tr> <th><label>テンプレートファイル</label></th> <td><input type="file" name="template"></td> </tr> </table> <center><input type="submit" value="送信"></center> </form> <style> label { margin-left: 30%; } .text{ margin-left: 10%; } .title { margin-left: 29%; } textarea { font-family: '游明朝'; font-weight: bold; } table { margin-left: 15%; } </style> </body> </html> ```

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

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

HTML

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