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

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

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

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

Q&A

解決済

1回答

819閲覧

submitしてもリクエストメソッドがGETで返ってくる。

512

総合スコア18

PHP

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

0グッド

0クリップ

投稿2019/05/08 12:05

編集2019/05/08 14:08

作っているもの

ユーザーIDとパスワードを照会する簡単なログインフォーム。

症状

フォームを埋めてsubmitしても、リクエストメソッドがGETで返ってくる。
また、空白のままsubmitすると、なぜかPOSTで返ってくる。

コード

・コントローラーファイル

php

1<?php 2/* 3* ログインページ 4*/ 5require_once './include/const/const.php'; 6require_once './include/model/function.php'; 7$err_msg = array(); //エラーメッセージ 8// セッション開始 9session_start(); 10//リクエストメソッドの値を確認 11var_dump(get_request_method()); //$_SERVER['REQUEST_METHOD']を関数化しています 12//リクエストメソッドを取得 13if (get_request_method() === 'POST') { 14 //ポストされたデータを取得 15 $user_id = get_post_data('user_id'); //POST値を格納する関数です 16 $psword = get_post_data('psword'); 17 // エラーメッセージ 18 if (trim($user_id) === '') { 19 $err_msg[] = 'ユーザー名を入力してください'; 20 } 21 if (trim($psword) === '') { 22 $err_msg[] = 'パスワードを入力してください'; 23 } 24 if (count($err_msg) === 0) { 25 //DB接続 26 $link = get_db_connect(); 27 //DBからログインデータを検索 28 if (($data = get_user_id($link)) === NULL) { //DBからログインデータを検索する関数 29 $err_msg[] = 'ユーザーID取得失敗'; 30 } 31 //DB接続解除 32 close_db_connect($link); 33 // 登録データを取得できたか確認 34 if (isset($data[0]['user_id']) === TRUE) { 35 // セッション変数にuser_idを保存 36 $_SESSION['user_id'] = $data[0]['user_id']; 37 $_SESSION['user_name'] = $data[0]['user_name']; 38 // ログイン済みユーザーのホームページへリダイレクト 39 header('Location: index.php'); 40 exit; 41 } else { 42 // ログイン失敗 43 $err_msg[] = 'ユーザーID、もしくはパスワードが違います。'; 44 // ログインページへリダイレクト 45 header('Location: login.php'); 46 exit; 47 } 48 } 49} 50include_once './include/view/login.php'; 51?>

・viewファイル

PHP

1<!DOCTYPE HTML> 2<html lang="ja"> 3<head> 4 <title>タイトル</title> 5 <meta charset="UTF-8"> 6 <link rel="stylesheet" href="./page.css"> 7</head> 8<body> 9 <header> 10 <div class="header-box"> 11 <a href="./top.php" class="logo">タイトル</p> 12 <a href="./login.php" class="menu menu-btn">ログイン</a> 13 </div> 14 </header> 15 <main> 16 <div class="container"> 17 <h1>ログイン</h1> 18<?php foreach ($err_msg as $value) { ?> 19<p class="err-msg"><?php echo $value; ?></p> 20<?php } ?> 21 <form class="form" method="post"> 22 <input type="text" name="user_id" placeholder="ユーザーID"> 23 <input type="password" name="psword" placeholder="パスワード"> 24 <button class="login-btn">ログイン</button> 25 </form> 26 <a class="return" href="./top.php">戻る</a> 27 </div> 28 </main> 29 <footer> 30 <p>テストページ</p> 31 </footer> 32</body> 33</html>

調べたこと

こちら(https://havelog.ayumusato.com/develop/others/e172-http-request-trans.html)のページの内容(遷移先のURLの末尾にスラッシュをつけていると、GETでリダイレクトされる)に近い問題だと思われるのですが、依然として原因不明のままです。

今まで作ってきたログインフォームは特に問題なかったので、突然このようなことになってしまい困っています。どなたかご教示お願いいたします。

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

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

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

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

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

tanat

2019/05/08 12:13

webサーバまでの間にIPS,WAF,ロードバランサーやリバースプロキシ等のHTTPリクエストを制御する機構は存在していませんか?
m.ts10806

2019/05/08 12:15

「リクエストメソッドがGET」を確認している部分のコードもあわせてご提示ください
512

2019/05/08 13:15

>tanatさま スクールのオンラインエディタを使っての制作をしていまして、そういった環境設定がどのようになっているのかは、よくわかっておりません。申し訳ございません。
guest

回答1

0

ベストアンサー

ログインに成功した場合も失敗した場合もLocation:でリダイレクトしているので、GETメソッドに切り替わってしまうのではないでしょうか。

// ログイン済みユーザーのホームページへリダイレクト header('Location: index.php');
// ログインページへリダイレクト header('Location: login.php');

後者のリダイレクトは不要な気がします。

投稿2019/05/08 14:16

otolab

総合スコア763

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

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

512

2019/05/08 14:23

解決いたしました!てっきりPOSTの受け渡しに問題があると思っていたのですが、リダイレクトして初期状態に戻ってしまう、ということだったんですね…!ご指摘ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問