はじめに戻る"; error("連続で送信することはできません。1分間お待ち下さい。"); // index_error("ご利用後は一定時間までご利用できません。"); } form_read(); if($FORM['mode'] == ""){ #最初の画面 //ここでワンタイムURL発行してそこへ移動する //セッションをクリア&開始して、そのセッションの継続 unset($_SESSION['login']); $_SESSION['login']['token'] = sha1(session_id()); $_SESSION['login']['mid'] = sha1(random_bytes(30)); $_SESSION['login']['smode'] = "userlogin"; $_SESSION['login']['REMOTE_ADDR'] = $_SERVER['REMOTE_ADDR']; $_SESSION['login']['in_time'] = $GLBtime; put_httphed(); $tplt = read_tplt4index("tpl_edit_login1.htm"); $tplt = chg_error($tplt,"user_mail"); print $tplt; exit; } if($_SESSION['login']['smode'] != "userlogin") index_error('フォームの流れが途切れたか、異常なアクセスを認めました(001)'); if(!(@hash_equals($FORM['sid'], $_SESSION['login']['token']) && !empty($FORM['sid']))) index_error('フォームの流れが途切れたか、異常なアクセスを認めました(002)'); if($FORM['sid'] !== sha1(session_id())) index_error('フォームの流れが途切れたか、異常なアクセスを認めました(003)'); if(!(@hash_equals($FORM['mid'], $_SESSION['login']['mid']) && !empty($FORM['mid']))) index_error(); if($_SESSION['login']['REMOTE_ADDR'] !== $_SERVER['REMOTE_ADDR']) index_error('フォームの流れが途切れたか、異常なアクセスを認めました(005)'); if($_SESSION['login']['in_time'] < $GLBtime - 60*60){ #前回の操作から60分立っているならエラー index_error("フォームの入力の制限時間(60分)が過ぎました。"); } $_SESSION['login']['mid'] = sha1(random_bytes(30)); if($FORM['mode'] == "next"){ //ここで入力されたメールアドレスへワンタイムURLを送る $error = array(); $wkinput = array(); //メールアドレスチェック $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 { //20201204CHG $sql_str2 = "select * from $TABLEuser where user_st != '8' and user_mail=? and user_frag='1'"; // $sql_str2 = "select * from $TABLEuser where user_mail=? and user_frag='1'"; $data = get_usedata4p($sql_str2,array($wkinput['user_mail']),"s"); if($data['user_id'] == ""){ $error['user_mail'] = "指定のメールアドレスは会員登録されていません。"; } if($data['user_st'] == 8){ $error['user_mail'] = "指定のメールアドレスは会員登録されていません。"; } } } else { $error['user_mail'] = "メールアドレスに許可できない文字等があります。"; } } else { $error['user_mail'] = "メールアドレスを入力してください。"; } if(count($error)){ put_httphed(); $tplt = read_tplt4index("tpl_edit_login1.htm"); $tplt = chg_error($tplt,"user_mail",$error['user_mail']); print $tplt; exit; } //送信確定なのでIPを保持 ipcheck("up",$_SERVER['REMOTE_ADDR'],2,3*60); ////ワンタイムURLの有効期限 // $_SESSION['login']['time1'] = $GLBtime; // $_SESSION['login']['urlfrag'] = 1; // $_SESSION['login']['tid'] = sha1(random_bytes(30)); //6時間でガベージ date_default_timezone_set('Asia/Tokyo'); //削除期限 $expire = strtotime("-6 hour"); $dir = $psfld."/"; $list = scandir($dir); foreach($list as $value){ $file = $dir . $value; if(!is_file($file)) continue; $mod = filemtime( $file ); if($mod < $expire){ //chmod($file, 0666); unlink($file); // print "$file
"; } } $pname = sha1(random_bytes(30)); $fname = "$psfld/$pname.cgi"; if(file_exists("$fname")){ $fp = @fopen("$fname", "a" ); } else { $fp = @fopen("$fname", "w" ); } $wk = array(); //ワンタイムURLの有効期限 $wk['time1'] = $GLBtime; $wk['urlfrag'] = 1; $wk['ip'] = $_SERVER['REMOTE_ADDR']; $wk['agent'] = $_SERVER['HTTP_USER_AGENT']; fputs ($fp,serialize($wk)); fclose($fp); //よし送ろう index_user_codemail($wkinput['user_mail'],$pname); put_httphed(); $tplt = read_tplt4index("tpl_edit_login2.htm"); $tplt = str_replace(array("#loginurl#"),array("index_loginchk.php?tid=".$pname),$tplt); print $tplt; exit; } index_error('順番エラー(00)'); //======================================================================= function index_error($str=""){ global $GLBreturl2; // end_session(); if($str == ""){ header('Location: index_login.php'); exit; } $GLBreturl2 = "はじめに戻る"; error("エラー:お手数ですが、再度はじめに戻ってやりなおしてください。
[ $str ]"); exit; } function read_tplt4index($filename){ $tplt = read_tplt($filename); //編集 return org_str_replace(array("#mid#","#sid#"),array($_SESSION['login']['mid'],$_SESSION['login']['token']),$tplt); } //======================================================================= ?>