忍者ブログ

からすまる日誌

20200217pm01 ログインしたらマイページ

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

20200217pm01 ログインしたらマイページ

CTRL+Hでキャッシュ削除

まちがってたところはセレクト文:
$sql = "SELECT * FROM users WHERE u_id=:u_id";

この*がちがってた。

1.userテーブルの全部を選択してひっぱってくる
2.dbにあるu_idと、ユーザーが入力しpostされてくる$_POST["u_id"]が一致すればいいんだが、$_POST["u_id"]は「人間が入力してくる」ものだからそのままでは触れない。よってプレースホルダにしておき、あとで中身を説明する。
 


WHERE句:
>SELECT構文を使って特定のレコードを検索するには、WHERE句を使います。WHEREの後に条件式を指定することにより、その条件にマッチしたレコードだけを選択することができます。

>SELECT * FROM customer WHERE id_c = 1;
 
全レコードの中からid_cが1のものをひっぱってこいは分かる。
u_idが:u_id"のものをひっぱってこいとはどういう意味だ? :u_idを定義してるのはどこなんだ。
次の授業までにかみ砕けないなら先生にちゃんと聞いて理解するほうがいいと思う。

根本的に理解できてなかった。ユーザーの入れて来る文字列はタグがあったり何があるか分からないから、いわば「:保留するぜいぇーい」という記述。:u_idとは。
だからこの時点で定義もへったくれもない。
変数名が同じだと大変混乱するといういつもの癖が出た。「:保留するぜいぇーい」を後解説してるのがbindValue。(のはずだ)


 
プレースホルダについて
https://webukatu.com/wordpress/blog/1638

sqlインジェクションについて
https://lets.postgresql.jp/documents/tutorial/with_php/against_sql_injection/placeholder/pg_xxxx/1

読んでも全然分からない。
そういうものだ、とりあえずそー記述すりゃいいらしい、とファジーに捉えようと思ったが、phpにしろjavaにしろ「いつか理解できるだろう」とほったらかしのファジーが増えすぎている気がする
 


さてログイン出来たらマイページに飛ばすよ
しかしページ遷移すると$nameが残らないですね?

①postする。めんどい
②sessionする かしこい

よって、ログイン出来たとき:
  //$name=$row["nickname"];
  $_SESSION["name"]=$row["nickname"];

先頭にも
<?php
session_start();
$name="";

を記述


ログインしてからはどのページもセッションをつけましょう

というわけで、index.phpにはつけてmypage.phpでsession_start();を付け忘れた例:

**06

出来た例

**07


しかしこれだとログインしてなくてもURLを直打ちしたら見れてしまう。
セッションデータがあるかないかで振り分ける必要がある。

indexの方に追加
  //ログイン成功
  //$name=$row["nickname"];
  $_SESSION["login"]=true;//これを追加!
  $_SESSION["name"]=$row["nickname"];
  header("Location: mypage.php");
  exit();

mypageの方

<?php
session_start();
if(empty($_SESSION["login"])){ //値がないかfalseのとき
 //ログインページに戻す
 header("Location:index.php");
 exit();
}
?>


セッションを消すにはブラウザ終了
クッキーを消してもだめ
戻る進むをおすとまれにセッションが切れることもある

同じ人の同一アクセスが続いているかどうかがセッション情報


このままだと何回でもチャレンジできてしまう。
そういうのをブルートフォースアタックという
 
 

PR

コメント

ブログ内検索

カレンダー

03 2025/04 05
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30