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

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

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

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Q&A

解決済

1回答

702閲覧

phpのログイン処理、$_SESSIONで詰まった

Super--Beginner

総合スコア44

PHP

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

0グッド

0クリップ

投稿2020/02/12 03:24

編集2020/02/12 03:49

#phpでログイン処理実装中に詰まりました....

$_SESSION にログイン情報を保存し、別のページでそれを読んでページを表示 するかログイン画面に飛ばすか を判断する処理を書いていますが、$_SESSIONに情報を書き込んだつもりでも、ログインページに飛ばされてしまいます。

login.php(一部略)

php

1<?php 2if(isset($_POST["login"])){ 3$_SESSION["user"] = "user"; 4header("Location:https://〇〇〇〇/home.php"); 5exit(); 6} 7?>

home.php(一部略)

php

1<?php 2session_start(); 3if(!isset($_SESSION["user"])){ 4 header("Location:https://〇〇〇〇.login.php"); 5 exit; 6} 7?>

このようになっています。
login.phpの方でセッションのuserにuserを書き込んでいるにもかかわらず、home.phpの方ではログイン出来ずに、login.phpに戻されてしまいます。

まだ、どちらのファイルに問題があるのかすら分かっていません。

login.phpでセッションに書き込んで、home.phpで読み込み、ログインする処理をするために、どの部分を直せばいいか教えて下さい。

#追記
##サーバー上のファイルはこのようになっています。

→:フォルダ ・:ファイル →file ・index.php ・〇〇.css →home ・index.php

##コピペのみで再現できるファイルを作成しました。
▼index.php

php

1<?php 2if(isset($_POST["login"])){ 3 if($_POST["user_id"] == "test_id" && $_POST["password"] == "test_password"){ 4 $_SESSION["user"] = "user"; 5 header("Location:home.php"); 6 exit(); 7 } 8 $message = "ミス"; 9} 10?> 11<!doctype html> 12<html lang="ja"> 13<head> 14<meta charset="UTF-8"> 15<title>test</title> 16</head> 17<header> 18</header> 19<body> 20<?php 21if($message){ 22 echo "<div class=text>$message</div>"; 23} 24?> 25 26<form action="index.php" method="POST"> 27 <p class="text">ID:<input type="text" name="user_id"></p> 28 <p class="text">Password:<input type="password" name="password"></p> 29 <input type="submit" name="login" value="login"> 30</body> 31</html>

▼home.php

php

1<?php 2session_start(); 3if(!isset($_SESSION["user"])){ 4 header("Location:index.php"); 5 exit; 6} 7?> 8<!doctype html> 9<html lang="ja"> 10<head> 11<meta charset="UTF-8"> 12<title>test</title> 13</head> 14<header> 15</header> 16<body> 17成功 18</body> 19</html>

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

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

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

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

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

m.ts10806

2020/02/12 03:27

>php初心者です 強調したところで何があるとは思いませんが、初心者アイコンつけられてますし、不要かと思います。 あと「セッションのuserにuserを書き込んでいる」とのことですが、確実にその処理を通ったというのはどのように確認とりましたか? POSTもそうですが、このコードだけだと誰も再現確認とれないので、できれば他者がコピペのみで再現確認とれる情報をご提示ください
guest

回答1

0

ベストアンサー

login.phpでsession_startされてません

投稿2020/02/12 03:44

yambejp

総合スコア116724

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

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

Super--Beginner

2020/02/12 03:55

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問