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

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

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

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

Q&A

解決済

1回答

222閲覧

トップページから「新規会員登録ページ」と「ログインページ」の、どちらか選んだ方に遷移する仕組みを作りたい

tonic

総合スコア12

PHP

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

0グッド

0クリップ

投稿2019/06/26 11:29

【やりたいこと】
##PHP言語で、トップページから「新規会員登録ページ」と「ログインページ」の、どちらか選んだ方に遷移する仕組みを作りたいです。

今PHP言語を使い、ログインの仕組みを作成中です。
ログイン済みかどうかはセッションで判断しています。

ログインしたときの時間を、タイムスタンプで$_SESSION['login_date']という変数に格納し

$_SESSION['login_date']を持っていればログイン済み
$_SESSION['login_date']がなければ未ログイン

という判定方法にしています。

悩んでいる部分は
未ログインのとき、
トップページから「新規会員登録ページ」と「ログインページ」のどちらかを選んだら、
その選んだページに遷移する仕組みを作る方法です。

php

1if (!empty($_SESSION['login_date'])) { 2 debug('ログイン済ユーザーです'); 3 4// ログインしているユーザー向けの処理 5 6}else{ 7 8 // ログインしていないユーザー向けの処理 9 10 debug('ログイン未ユーザーです'); 11 // signup.phpのページ以外からは、トップページへ遷移する 12 if (basename($_SERVER['PHP_SELF']) !== 'signup.php') { 13 debug('$_SERVERの中身:'.print_r($_SERVER, true)); 14 debug('トップページに遷移します'); 15 // topに遷移させる 16 header("Location:top.php"); 17 } 18 }

上のコードの中の
「ログインしていないユーザー向けの処理」
から手詰まりです。

「signup.phpのページ以外からは、トップページへ遷移する」仕組みは書いたのですが
これを「signup.phpのページとlogin.phpページ以外からは、トップページへ遷移する」仕組みにしたいのです。

ただ単純にページを遷移させる仕組みにすると、無限ループしてしまったので上の書き方にしてあります。

【やってみたこと】

以下のコードは
// ログインしていないユーザー向けの処理
以下の内容になります。

php

1// ログインしていない場合($_SESSION['login_date']がない場合) 2 debug('ログイン未ユーザーです'); 3 // signup.phpのページ以外からは、トップページへ遷移する 4 if (basename($_SERVER['PHP_SELF']) !== ('signup.php' or 'logion.php')) { 5 debug('$_SERVERの中身:'.print_r($_SERVER, true)); 6 debug('トップページに遷移します'); 7 // topに遷移させる 8 header("Location:top.php"); 9 } 10 11 12=====コメント====== 13この書き方だとどちらにも遷移しませんでした。

php

1// ログインしていない場合($_SESSION['login_date']がない場合) 2 debug('ログイン未ユーザーです'); 3 // signup.phpのページ以外からは、トップページへ遷移する 4 if (basename($_SERVER['PHP_SELF']) !== 'signup.php') { 5 debug('$_SERVERの中身:'.print_r($_SERVER, true)); 6 debug('トップページに遷移します'); 7 // topに遷移させる 8 header("Location:top.php"); 9 }else{ 10 (basename($_SERVER['PHP_SELF']) !== 'login.php') { 11 debug('$_SERVERの中身:'.print_r($_SERVER, true)); 12 debug('トップページに遷移します'); 13 // topに遷移させる 14 header("Location:top.php"); 15 } 16 17 18=====コメント====== 19この書き方もどちらにも遷移しませんでした。

どのようにコードを書けば
「新規会員登録ページ」と「ログインページ」の、どちらか選んだ方に遷移する仕組みを作ることができるでしょうか?

どうかお力を貸してください。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

リファラーを使ってリンク元を判断する事が出来ますhttps://www.php.net/manual/ja/reserved.variables.server.php

投稿2019/06/26 11:39

hentaiman

総合スコア6426

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

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

tonic

2019/06/26 12:02

ご回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問