もう突っ込みどころが多すぎで、卒倒したソースでした。 色々うんこが多すぎて・・・ちなみに「user」テーブルには削除フラグ「DEL_FLG」があり、ユーザー削除時に1にしていたようです。
もちろん、コレは地獄への入り口・・・・他の部分もコレに劣るともまさらない、地獄コード。 もう、人様のソースを触ると地獄へ行くと痛感したソースでした。
しかし・・・僕すごいんだよ、優秀なんだよというスーバーPHPエンジニアに見せたら、真顔でどこがおかしいんですか?って言われました。
もちろん、全て作り直し、DBはマイグレーションしたものの、もとの糞な構造に引きずられて、変な数値の持ち方で後々、死亡しました。(0:削除 1:表示 2:削除 3:保留中とか)
<?php
/*********************************************************
ログイン処理
*********************************************************/
if ($_POST["mode"]=="login"){
//ユーザ情報取得
$sql = "SELECT * ";
$sql.= " from user";
$sql.= " where ID = '" .$_POST["ID"]. "'";
$rs = mySQLQuery($sql);
while ($item = mysql_fetch_array($rs)) {
$userData = $item;
}
if ( $userData['PASSWORD'] == $_POST["PW"] ) {
header("HTTP/1.1 301 Moved Permanently");
//ユーザタイプチェック
if ($userData["TYPE"]=="1"){
header("Location: ./mastermenu.php");
}else if ($userData["TYPE"]=="2"){
if ($_SESSION["RETURN_URL"]!=""){
header("Location: ./".$_SESSION["RETURN_URL"]);
}else{
header("Location: ./usermenu.php");
}
}
}else{
$errMSG.="<font style=\"color:#ff0000;\">ID、又はパスワードに誤りがあります。</font>";
}
}
echo $errMSG;
//しかもこの下でログイン失敗のログ書き込み
//・・・・
//
?>
使い方ヒント: 「これは臭う」という行を見付けたら、各行の
をクリックしてマーキングしておきましょう(要Twitter OAuth認証)
その自称優秀君、とりあえずSQLインジェクションの可能性には気付け!
ID「hogehoge'; DROP TABLE user; --」とかで誰もログインできなくなりそう
コメント投稿には、twitter認証が必要です。
Twitter認証
突っ込みどころ多すぎて笑うw