- 締切済み
SESSIONを使ったログイン画面
今、ログイン画面を作っているのですが、 $sql="select name from users where email='$email' and passwd='$passwd'"; $_SESSION["name"]=$name; 上記のように行い、 こんにちは<?= $_SESSION["name"]?>さん と表示したいのですが、どうしても name が表示されません DBから読み取ったメールアドレスとパスワードに合った名前を読み取るものにしたいのですが、どのようにしたらいいでしょうか。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- gentaro
- ベストアンサー率47% (105/221)
非常にくだらない疑問なのですが、 $nameにはDBから取り込んだ名前を入れるのでしょうか? ソース通りだと、SESSION変数に入れたあとにクエリ実行している気が。 あとは、session_startしてないオチ、とか・・・
- wp_
- ベストアンサー率54% (132/242)
>error_reporting(E_ALL);を使ってエラーを確認してみたのですが、何も出てきませんでした・・・。 それはありえない気がするのだけど・・・^^; >$sql="select * from users where email='$email' && passwd='$passwd'"; SQL文に&&は使えません。andを使いましょう。 あと文字列を生成するときは内部に変数を放り込むより連結した方が高速かつスマートです。 $sql="select * from users where email='".$email."' and passwd='".$passwd."'"; >$_SESSION["name"]=$name; > >$rs=mysql_query($sql); // ←おそらくここで止まっている >if(mysql_num_rows($rs)>0){ >$_SESSION["login"]=1; > >header('location:'. "top.php"); >exit; >} >mysql_close($con); >SESSIONが出ないだけで、後は正常に動きます locationヘッダまできちんと到達しているのでしょうか? 到達していたらそれはそれで不思議なのですが。 どなたかが書いていましたが、 echo mysql_error(); も確認しましょう。
- wp_
- ベストアンサー率54% (132/242)
以前の質問は全て噛み砕いたのですかね・・・ エラーログを見ましょう。その質問内容では誰もアドバイスできるわけありません。
- widoww
- ベストアンサー率20% (33/159)
上のプログラムは端折ったプログラムなのでしょうか 上の例だと$nameって変数の中身は空だと思いますけど・・・・
お礼
回答ありがとうございます 上記のプログラムは一部を抜き取ったものです。 DBには接続してあります $con=mysql_connect(localhost,***,****); mysql_select_db(***db); この時点でエラーは出ていないので、DBには接続されていると思うのですが SQLの組み方に問題があるのでしょうか。
お礼
色々失礼をいたしました。 error_reporting(E_ALL);を使ってエラーを確認してみたのですが、何も出てきませんでした・・・。 $sql="select * from users where email='$email' && passwd='$passwd'"; $_SESSION["name"]=$name; $rs=mysql_query($sql); if(mysql_num_rows($rs)>0){ $_SESSION["login"]=1; header('location:'. "top.php"); exit; } mysql_close($con); ?> 上記がソースになります。 SESSIONが出ないだけで、後は正常に動きます SQLになにか問題でもあるのでしょうか