• 締切済み

SESSIONを使ったログイン画面

今、ログイン画面を作っているのですが、 $sql="select name from users where email='$email' and passwd='$passwd'"; $_SESSION["name"]=$name; 上記のように行い、 こんにちは<?= $_SESSION["name"]?>さん と表示したいのですが、どうしても name が表示されません DBから読み取ったメールアドレスとパスワードに合った名前を読み取るものにしたいのですが、どのようにしたらいいでしょうか。

みんなの回答

  • gentaro
  • ベストアンサー率47% (105/221)
回答No.4

非常にくだらない疑問なのですが、 $nameにはDBから取り込んだ名前を入れるのでしょうか? ソース通りだと、SESSION変数に入れたあとにクエリ実行している気が。 あとは、session_startしてないオチ、とか・・・

  • wp_
  • ベストアンサー率54% (132/242)
回答No.3

>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)
回答No.2

以前の質問は全て噛み砕いたのですかね・・・ エラーログを見ましょう。その質問内容では誰もアドバイスできるわけありません。

sawa02sawa
質問者

お礼

色々失礼をいたしました。 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になにか問題でもあるのでしょうか

  • widoww
  • ベストアンサー率20% (33/159)
回答No.1

上のプログラムは端折ったプログラムなのでしょうか 上の例だと$nameって変数の中身は空だと思いますけど・・・・

sawa02sawa
質問者

お礼

回答ありがとうございます 上記のプログラムは一部を抜き取ったものです。 DBには接続してあります $con=mysql_connect(localhost,***,****); mysql_select_db(***db); この時点でエラーは出ていないので、DBには接続されていると思うのですが SQLの組み方に問題があるのでしょうか。

関連するQ&A