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

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

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

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

Q&A

解決済

2回答

1158閲覧

ログインボタン後の設定したページへ移管しない。

Ms.yy

総合スコア83

PHP

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

0グッド

0クリップ

投稿2019/06/16 22:07

前提・実現したいこと

ログインボタンを押した後に設定してある、index2.phpへ飛ばずこちらのページだけに再び戻るのですが原因が何かわかる方いらっしゃいますでしょうか?

会員登録をしその内容がDBに保存され、上記ログインページにて入力したアドレスとパスワードがDBの内容と合致していればログインボタンを押した後にページへ移管される仕組みです。

教本通り進めているのですが、
どこがおかしいのか分からず、宜しくお願い致します。

該当のソースコード

<?php session_start(); require("dbconnect.php"); # if($_COOKIE["name"] !== ""){ # $name=$_COOKIE["name"]; # } if(!empty($_POST)) { if($_POST["email"] !=="" && $_POST["password"] !==""){ $login=$db->prepare("select*from members where email=? and password=?"); $login->execute (array( $_POST["email"], sha1($_POST["password"]) )); $member=$login->fetch(); if($member){ $_SESSION["id"]=$member["id"]; $_SESSION["time"]=time(); #if($_POST["save"]==="on"){ # setcookie("name",$_POST["name"],time()+60*60*24*14); #} header("Location:index2.php"); exit(); }else { $error["login"]="failed"; } }else{ $error["login"]="blank"; } } ?>

試したこと

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

ベストアンサー

どの分岐を通っているか、各変数が想定の情報が取れているかデバッグにて確認してください。

例:

php

1<?php 2 3session_start(); 4require("dbconnect.php"); 5 6 7# if($_COOKIE["name"] !== ""){ 8# $name=$_COOKIE["name"]; 9# } 10 11echo "POSTの内容をdump".PHP_EOL; 12var_dump($_POST); 13if(!empty($_POST)) { 14 echo __LINE__.PHP_EOL; 15 if($_POST["email"] !=="" && $_POST["password"] !==""){ 16 17 $login=$db->prepare("select*from members where email=? 18 and password=?"); 19 20 21 $login->execute (array( 22 $_POST["email"], 23 sha1($_POST["password"]) 24 25 )); 26 27 $member=$login->fetch(); 28 echo "memberの内容をdump".PHP_EOL; 29 var_dump($member); 30 if($member){ 31 echo __LINE__.PHP_EOL; 32 $_SESSION["id"]=$member["id"]; 33 $_SESSION["time"]=time(); 34 35 #if($_POST["save"]==="on"){ 36 # setcookie("name",$_POST["name"],time()+60*60*24*14); 37 #} 38 //header("Location:index2.php"); 39 echo __LINE__.PHP_EOL; 40 exit(); 41 }else { 42 echo __LINE__.PHP_EOL; 43 $error["login"]="failed"; 44 } 45 }else{ 46 echo __LINE__.PHP_EOL; 47 $error["login"]="blank"; 48 } 49 echo __LINE__.PHP_EOL; 50 } 51 52 53echo __LINE__.PHP_EOL; 54?>

投稿2019/06/16 22:51

編集2019/06/17 00:40
m.ts10806

総合スコア80765

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

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

Ms.yy

2019/06/17 10:17

passwordの部分をdbで記録されてるidにしたらすんなりログイン(ページが移管された)したので このページに問題があるのかなと判断ができました。
m.ts10806

2019/06/17 11:16

それならデータがおかしいということですね。データ登録部分も見直してください
Ms.yy

2019/06/17 11:30

mts10806さん分かりました。 もう一度よく見直してみます。
guest

0

index2.phpで、$_SESSION['id']が設定されているか、echoなどで確認をしてください。
もしかしたらセッションが設定されてなくてindex2.phpからリダイレクトされてるかも

投稿2019/06/17 03:37

TeamPassionall

総合スコア80

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

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

Ms.yy

2019/06/17 10:15

passwordの部分をDBで自動に保存されるidに書き換えたらページは教本通り移管致しました。 なぜpasswordではダメなのかおわかりなられますか? sha1($_POST["password"])の部分はsha1を消して$_POST["id"]にしてます。
TeamPassionall

2019/06/17 23:27

私も同じことでハマったことがありました。 passwordは、password_verifyなどの関数名で使われてるからエラーになる…と、私は勝手に思っています。
Ms.yy

2019/06/18 21:42

ご教授ありがとうございます。 現在も原因が分からず、、、 上記の内容参考にさせて頂きますね^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問