$GLBtime-60"); if($_SESSION['pass_time']){ if($_SESSION['pass_time'] > $GLBtime-60){ #登録後連続をさせないために1分置く logmsg("連続でのパスワード登録はできません。"); index_error("連続でのパスワード登録はできません。"); } } #最初の画面 $_SESSION = array(); $_SESSION['token'] = sha1(session_id()); $_SESSION['mid'] = sha1(random_bytes(30)); $_SESSION['smode'] = "keisan"; $_SESSION['REMOTE_ADDR'] = $_SERVER['REMOTE_ADDR']; $_SESSION['in_time'] = $GLBtime; put_httphed(); $tplt = read_tplt4index("tpl_edit_pass1.htm"); $tplt = chg_error($tplt,"user_id"); $tplt = chg_error($tplt,"user_mail"); $tplt = chg_error($tplt,"user_pass"); $tplt = str_replace(array("#user_id#","#user_mail#"),"",$tplt); print $tplt; exit; } #ここから下はトークンが来てる #&post通信 # if($_SERVER['REQUEST_METHOD'] != "POST") index_error('code01'); if($_SESSION['smode'] != "keisan") index_error('フォームの流れが途切れたか、異常なアクセスを認めました(001)'); if(!(@hash_equals($FORM['sid'], $_SESSION['token']) && !empty($FORM['sid']))) index_error('フォームの流れが途切れたか、異常なアクセスを認めました(002)'); if($FORM['sid'] !== sha1(session_id())) index_error('フォームの流れが途切れたか、異常なアクセスを認めました(003)'); if(!(@hash_equals($FORM['mid'], $_SESSION['mid']) && !empty($FORM['mid']))) index_error(); if($_SESSION['REMOTE_ADDR'] !== $_SERVER['REMOTE_ADDR']) index_error('フォームの流れが途切れたか、異常なアクセスを認めました(005)'); if($_SESSION['in_time'] < $GLBtime - 60*60){ #前回の操作から60分立っているならエラー index_error("フォームの入力の制限時間(60分)が過ぎました。"); } if(get_ref() != "index_pass.php") index_error('フォームの流れが途切れたか、異常なアクセスを認めました(006)'); $_SESSION['mid'] = sha1(random_bytes(30)); if($FORM['mode'] == "step1"){ $WKinput = array(); #認証 $error = array(); $wkinput['user_id'] = chgnum($FORM['user_id'],3); if(!preg_match("/^\d{4}$/", $wkinput['user_id'])) { $error['user_id'] = "申請番号は半角数字4桁で入力してください。"; } $wkinput['user_mail'] = ret_delkana($FORM['user_mail']); if($wkinput['user_mail']){ if(filter_var($wkinput['user_mail'],FILTER_VALIDATE_EMAIL)){ if(ret_maxnumerror($wkinput['user_mail']) == 1){ $error['user_mail'] = "メールアドレスが長すぎます。"; } } else { $error['user_mail'] = "メールアドレスに許可できない文字等があります。"; } } else { $error['user_mail'] = "メールアドレスを入力してください。"; } $data = array(); if(!count($error)){ #とりあえず入力エラーはない。次にユーザーがいるのか $sql_str2 = "select * from $TABLEuser where user_id=? and user_mail=? and user_frag='1'"; $data = get_usedata4p($sql_str2,array($wkinput['user_id'],$wkinput['user_mail']),"ss"); if($data['user_id']){ #登録済み、退会かどうかのチェック if($data['user_st'] == 8){ $error['user_id'] = "退会済みです。"; } else { #ならパスワードチェック $wkinput['user_pass'] = ret_delkana($FORM['user_pass']); if($wkinput['user_pass'] == "") { $error['user_pass'] = "パスワードを入力してください。"; } else if(passwd_chk($wkinput['user_pass'])) { $error['user_pass'] = "パスワードは半角大文字小文字数字を各種1つ以上含んだ8桁で入力してください。"; } else { if($wkinput['user_pass'] != $FORM['user_pass2']){ $error['user_pass'] = "パスワードを正しく2回入力してください。"; } } } } else { $error['user_id'] = "申請番号または登録メールアドレスが一致しませんでした。"; } } if(count($error)){ put_httphed(); $tplt = read_tplt4index("tpl_edit_pass1.htm"); $tplt = chg_error($tplt,"user_id",$error['user_id']); $tplt = chg_error($tplt,"user_mail",$error['user_mail']); $tplt = chg_error($tplt,"user_pass",$error['user_pass']); $tplt = org_str_replace(array("#user_id#","#user_mail#"),array($wkinput['user_id'],$wkinput['user_mail']),$tplt); print $tplt; exit; } //すべてクリア $pname = sha1(random_bytes(30)); $fname = "$psfld/$pname.cgi"; if(file_exists("$fname")){ $fp = @fopen("$fname", "a" ); } else { $fp = @fopen("$fname", "w" ); } $wk = array(); $wk['user_id'] = $data['user_id']; $wk['user_pass'] = $wkinput['user_pass']; $wk['mid'] = $_SESSION['mid']; $wk['intime'] = $GLBtime; fputs ($fp,serialize($wk)); fclose($fp); index_pass_mail($data,$wk['mid'],$pname); $_SESSION['pass_time'] = $GLBtime; put_httphed(); $tplt = read_tplt4index("tpl_edit_pass2.htm"); $tplt = str_replace(array("#loginurl#"),array("index_passset.php?mid=".$wk['mid']."&p=".$pname),$tplt); print $tplt; exit; } //======================================================================= function index_error($str=""){ global $GLBreturl2; end_session(); if($str == ""){ header('Location: index_pass.php'); exit; } $GLBreturl2 = "はじめに戻る"; error("エラー:お手数ですが、再度、初めからやりなおしてください。
[ $str ]"); exit; } function read_tplt4index($filename){ $tplt = read_tplt($filename); return org_str_replace(array("#mid#","#sid#"),array($_SESSION['mid'],$_SESSION['token']),$tplt); } //======================================================================= ?>