• 締切済み

ログイン パスワード変更のプログラム

ログインのプログラムをこんな感じで書いたのですが、 パスワードを変更できるようにするには、どういったプログラムを 追加すればいいのでしょうか? <? $fl='<name>xxx</name><pass>abcde</pass><name>yyy</name><pass>abcde</pass><name>zzz</name><pass>abcde</pass><name>ddd</name><pass>abcde</pass><name>guest</name><pass>guest</pass>';//ファイルから読み込んだ文字列 $name=$_POST['username'];//名前 if(ereg('<name>'.$name.'</name><pass>[a-z0-9]+</pass>',$fl,$a)){ $pass=ereg_replace('[^ ]+<pass>','',$a[0]); $pass=ereg_replace('</pass>','',$pass); if($pass==$_POST['pass']){ echo 'ログインしました。'; }else{ echo 'パスワードが違います。'; } }else{ echo '登録されていません。'; } ?> <form method="POST"> name<input name="username"><br> pass<input type="password" name="pass"><br> <input type="submit" value="ログイン"> </form> 宜しくお願い致します。

  • PHP
  • 回答数2
  • ありがとう数0

みんなの回答

  • memphis
  • ベストアンサー率40% (975/2395)
回答No.2

IDとパスワードを比較して「ログイン」としている所から、新しいパスワードの入力を行い、古いパスワードを置き換えればいいだけです。 上記のはサンプルだと思いますが、実際に作成する場合は IDが「<name>」の人はログインできない等、見直すところは多いです。

add0804
質問者

補足

>IDとパスワードを比較して「ログイン」としている所から、新しいパスワードの入力を行い、古いパスワードを置き換えればいいだけです。 というのは、どういったプログラムを組めばいいのですか? また、「IDが「<name>」の人はログインできない」とはどういうことですか?お願いします。

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

ID,パスワードは別ファイルにしたほうがいいのではないでしょうか? そうすればパスワードの変更はそのファイルの更新だけです。 パスワードファイルは推測されない名前にするか、可能ならブラウザ でアクセスできる領域外に置くのがベストです。

add0804
質問者

補足

>ID,パスワードは別ファイルにしたほうがいいのではないでしょうか? 別ファイルにした場合、IDとパスワードの一致はどのように 確認したらいいのですか? また、ファイルの更新はどのようなプログラムですか? お願いします。

関連するQ&A

  • phpのプログラムに関する質問です。

    今、ログインシステムを作っている途中なのですが、以下のプログラムでやってみると、 登録してある名前とパスワードを打ち込むと、最初「パスワードが違います。」と出て、 戻ってもう一度同じものを打ち込むと、うまく先へ進みます。 (login.php)のファイルで↓ <html> <head> <title>ログイン画面Var.1</title> </head> <body > <form method="POST" action="get_login.php"> <table> <tr> <td>名前:</td> <td><input type=text name="name"></td> </tr> <tr> <td>パスワード:</td> <td><input type=password name="pass"></td> </tr> <tr> <td></td> <td> <input type=submit value="ログイン"> <input type=reset value=" 取消 "> <input type=submit name="regist" value="新規登録"> </td> </tr> </table> </form> </body> </html> (get_login.php)のファイルで↓ <? setcookie("name2", $_POST["name"]); $contents = @file_get_contents('name_list.txt'); //ファイルから読み込んだ文字列 $name=$_COOKIE['name2'];//名前 if($_POST["regist"]=="新規登録"){ readfile("regist.php"); }else{ if(ereg('<name>'.$name.'</name><pass>[a-z0-9]+</pass>',$contents,$a)){ $pass=ereg_replace('[^ ]+<pass>','',$a[0]); $pass=ereg_replace('</pass>','',$pass); if($pass==$_POST['pass']){ readfile("phptxtwrite2.php"); }else{ echo ("パスワードが違います。<br>". "<a href=\"./login.php\">戻る</a>"); } }else{ echo("登録されていません。<br>". "<a href=\"./login.php\">戻る</a>"); } } ?> (name_list)のファイルで↓ <name>会</name><pass>ss</pass> <name>さめ</name><pass>kk</pass> <name>やす</name><pass>ii</pass> <name>のり</name><pass>kk</pass> <name>あ</name><pass>a</pass> <name>あああ</name><pass>aaa</pass> <name>dda</name><pass>ds</pass> こんな感じなのですが、なぜ一発でうまくいかないのでしょうか?宜しくお願いします。 また、改良点などがありましたら、アドバイス宜しくお願いします。

    • ベストアンサー
    • PHP
  • 半角英数判定

    こんにちわ。最近PHPをやりはじめた者です。 下記のスクリプトを使用して空白判定はできたのですが、半角英数文字 を判定できなくて困っています。エラーが出てしまい、画面遷移できないのです。したいことは、半角英数文字以外がユーザーIDとパスワードに入力されたとき、「半角英数で入力してください」という判定をしたいのです。画面遷移後のスクリプトは文字制限の都合で記載できませんでした。  ユーザー名<br> <form method = "post" action = "subject02-01.php" > <input type = "text" name = "USERNAME"><br> パスワード<br> <input type = "password" name = "PASS"> <input type = "submit" name = "submit" value = "ログイン"> <?php $str = mb_convert_kana($str,"rna") if($_POST["submit"] == "ログイン") if($_POST["USERNAME"] == "root" && $_POST["PASS"] == "admin") { echo "認証に成功しました。"; } else if( $UserName == "" || $Password == "") else if(ereg("[A-Za-z0-9\-]",$str)) else { echo "認証に失敗しました。"; }

    • ベストアンサー
    • PHP
  • 管理パスワードによる認証

    既存のファイルに管理者による認証を付加したいと思いますが、下記のコードではうまくいきません。アドバイス下さい。 <?php //パスワードの設定 $password = "admin"; //パスワードチェック passchk(); function passchk(){ global $password, $post; $p = $post['pass']; if ($p == $password) { echo "認証成功!"; // return; } else { echo<<<EOM <p>パスワードを確認して下さい。</p><br> <form action="login.php" method="post"> パスワード:<input type="password" name="pass" size="8"> <input type=submit value="ログイン" /> </form> EOM; exit; } } ?>

    • 締切済み
    • PHP
  • PHPについて

    PHPについて。 現在このような形でパスワードを作っております <html> <head> <title>form</title> </head> <body> パスワードを入力してください。 <form name="form" action="./sample04.php" method="POST"> <input name="pass" type="text"> <input type="submit" value="ログイン"> </form> </body> </html> ↑HTMLの文面↑ <?php // パスワードを設定する。 $pass = 1234; // form.htmlからのパスワードを受け取る $form_pass = $_REQUEST["pass"]; ?> <html> <head> <title></title> </head> <body> <?php // form.htmlからの値が$form_passと等しいか評価する if($form_pass == $pass){ echo "ログイン成功<br>", "<a href=\"./top.html\">進む</a>"; }else{ echo "ログイン失敗<br>", "<a href=\"./index.html\">戻る</a>";} ?> </body> </html> 質問はパスワードを複数作りたいのですが・・・ どうすればいいですか?PHPにはあまり詳しくないので・・・

    • 締切済み
    • PHP
  • IDとパスワードを認証すコードをかきましたが動きません

    phpの超初心者です、よろしくお願いします。 IDとパスワードを認証すコードをかきましたが動きません。 Formから別に使ったdbにあるIDとパスを見に行くコードでが、 dbにあるIDとパスと同じものを打ち込んでも認証しません、 また別のdbにあるIDとパスを打ち込んでも認証するときがあります。 一体どこが悪いのでしょうか。どこが悪いのかさっぱり分かりません。 よろしくお願いします。 --------------------------------------- <?php $conn = mysql_connect(localhost, "root", ""); //DBにコネクト mysql_select_db('login_test', $conn); //'login_test'をselect mysql_query('SET NAMES utf8'); //defalt $res_init=mysql_query('SELECT * from user'); //userからすべてのdataを取得 while($arr = mysql_fetch_assoc($res_init)){ //結果セットが無くなるまでループ foreach($arr as $k => $v){ echo "フィールド ".$k." の値は ".$v; echo "<br />"; } echo "<br />"; } //formからDATAを取得 $id=$_POST['input_ID']; $pass=$_POST['input_pass']; print("入力したid= ".$id." 入力したpass= ".$pass); //認証check if(auth ($id,$pass,$conn)===true){ print("認証成功"); } else{ print("認証不成功"); } //function function auth ($id,$pass,$conn){ $sql = "SELECT * from user WHERE user_id = $id AND password = '$pass'"; $res = mysql_query($sql, $conn); return $res; } ?> <form action="http://localhost/test/test.php" method="POST"> IDの入力:<input type="text" name="input_ID"><br /><br /> Passの入力:<input type="text" name="input_pass"><br /><br /> <input type="submit" name="delete_submit" value="送信"><br /> </form> </body> </html>

    • ベストアンサー
    • PHP
  • 簡単なif文でちゃんと分岐しません

    今参考書を見ながらやっていますがうまくいきません。 postからusernameとpasswordの値を受け取って処理する スクリプトなんですが、うまく作動してくれません。 ■問題点 分岐点が4箇所ありますが、 パスワードだけ間違っても、すべて■1■ ログイン処理状態になります。 どうしてもパスワード再設定の画面に切り替わりません。 入力されたデータはデータベースにきちんと入ります。 3日間これで悩んでいて、ついに投稿してみました。 こんなこともわからない私ですが なんとかお願い致します。 ----ここから---- <?php session_start(); $username = $_POST["username"]; $sql = "SELECT * FROM `art_users` WHERE `user_name` = '%{$username}%'"; $query = mysql_query($sql) or die("データ追加エラー" . mysql_error()); $record = mysql_fetch_array($query, MYSQL_ASSOC); if ( $_POST["mode"] == "login" && mysql_num_rows($query) > 0 && $_POST["password"] == $record["user_password"] ) { $_SESSION["userid"] = $record["user_id"]; header("Location: kaukau_top.php"); } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ログイン処理</title> </head> <body> <?php // ■1■ ログイン処理状態 if ( $_POST["mode"] == "login" ) { // 新規登録:クエリ実行結果が0行=既存ユーザー名と一致しない if ( mysql_num_rows($query) == 0 ) { echo '新規ユーザー登録<br>'; echo '<form action="kaukau_login.php" method="POST">'; echo '<input type="hidden" name="mode" value="register">'; echo '<input type="submit" value="登録">'; echo '</form>'; } // パスワードミス:クエリ実行結果のパスワードと入力されたパスワードが一致しない elseif ( $_POST["password"] != $record["user_password"] ) { echo 'パスワードが違います。<br>'; echo 'ひみつの質問に答えると、パスワードを変更できます。<br>'; echo '<form action="kaukau_login.php" method="POST">'; echo '<input type="hidden" name="username" value="' . $username . '">'; echo '<input type="hidden" name="mode" value="resetpassword">'; echo '<input type="submit" value="送信">'; echo '</form>'; } } // ■2■ パスワード再設定状態 elseif ( $_POST["mode"] == "resetpassword" ) { if( $record["user_answer"] == $_POST["answer"] ) { echo 'パスワード再設定<br>'; echo '<form action="kaukau_login.php" method="POST">'; echo '<input type="hidden" name="username" value="' . $username . '">'; echo '<input type="hidden" name="mode" value="modifypassword">'; echo '<input type="submit" value="登録">'; echo '</form>'; } else{ echo "ひみつの答えが違います"; } } // ■3■ 新規ユーザー登録状態 elseif ( $_POST["mode"] == "register" ) { if( $_POST["password"] == $_POST["confirm"] ) { $sql = "INSERT INTO users (user_name, user_password, user_question, user_answer) VALUES ("; $sql .= " '" . $_POST["username"] ."',"; $sql .= " '" . $_POST["password"] ."',"; $sql .= " '" . $_POST["question"] ."',"; $sql .= " '" . $_POST["answer"] ."')"; $result = mysql_query($sql); echo '登録しました。'; } else { echo 'パスワードを再確認してください。'; } } // ■4■ パスワード変更状態 elseif ( $_POST["mode"] == "modifypassword" ) { if ( $_POST["password"] == $_POST["confirm"] ) { $sql = "UPDATE users"; $sql .= " SET user_password = '" . $_POST["password"] . "'"; $sql .= " WHERE user_name = '" . $_POST["username"] . "'"; mysql_query( $db, $sql ); echo '登録しました。'; } else { echo 'パスワードを再確認してください。'; } } ?> </body> </html>

    • 締切済み
    • PHP
  • php ログインについて

    php ログインについて phpでログイン画面を作っているのですがログインできません。エラー等々もでず、「スタッフコードかパスワードが違います」になります。ちなみにDBにはスタッフのデータはしっかり存在します。 コードとパスワードを正しく入力しているにもかかわらずログインできません。 ソースはこちらです [staff_login.php] <!DOCTYPE html> <head> <meta charset="UTF-8"> <title>ログイン</title> </head> <body> スタッフログイン<br/> <br/> <form method="post" action="staff_login_check.php"> スタッフコード<br/> <input type="text" name="code"><br/> パスワード<br/> <input type="password" name="pass"><br/> <br/> <input type="submit" value="ログイン"> </form> </body> </html> [staff_login_check.php] <?php try { $staff_code=$_POST['code']; $staff_pass=$_POST['pass']; $staff_code=htmlspecialchars($staff_code); $staff_pass=htmlspecialchars($staff_pass); $staff_pass=md5($staff_pass); $dsn='mysql:dbname=*****;host=********'; $user='*********'; $password='********'; $dbh=new PDO($dsn,$user,$password); $dbh->query('SET NAMES utf8'); $sql='SELECT name FROM mst_staff WHERE code=? AND password=?'; $stmt=$dbh->prepare($sql); $data[]=$staff_code; $data[]=$staff_pass; $stmt->execute($data); $dbh = null; $rec=$stmt->fetch(PDO::FETCH_ASSOC); if($rec==false) { print'スタッフコードかパスワードが違います<br/>'; print'<a href="staff_login.html">戻る</a>'; } else { header('Location: staff_top.php'); } } catch(Exception $e) { print'エラーが発生しました'; exit(); } ?> 解決方法、ご指摘ございましたら教えていただきたいです。

    • ベストアンサー
    • PHP
  • チェックボックスの初期選択と選択保持

    複数のチェックボックスのうちどれかを初期選択させ、ボタン押下後は選択保持をさせたいです。 片方のみならできるのですが、どなたかご教授いただけるとうれしいです。 現在のソースはこんな感じになっていて選択したものの保持はできるのですが、初期選択ができていません。よろしくおねがいします。 <html> <body> <form name="form" method="post"> <?php test1() ?> test1 <?php test2() ?> test2 <?php test3() ?> test3<br><br> <input type="submit" name="button" value="button"> </form> <?php function test1(){ if ($_POST['test1']){ echo "<input type=\"checkbox\" name=\"test1\" checked>"; }else{ echo "<input type=\"checkbox\" name=\"test1\">"; } } function test2(){ if ($_POST['test2']){ echo "<input type=\"checkbox\" name=\"test2\" checked>"; }else{ echo "<input type=\"checkbox\" name=\"test2\">"; } } function test3(){ if ($_POST['test3']){ echo "<input type=\"checkbox\" name=\"test3\" checked>"; }else{ echo "<input type=\"checkbox\" name=\"test3\">"; } } ?> </body> </html>

    • 締切済み
    • PHP
  • php $_SESSIONで値が消える。

    いつもお世話になり誠にありがとうございます。 標記の件。 インプット画面ー>確認画面ー>戻るー>インプット画面 インプット画面に戻った時、どうしても最初のインプット画面で打った内容が消えてしまいます。 プログラムを診て、誤りを指摘して頂けないでしょうか? どうぞよろしくお願い致します。           記 <?php session_start(); $mode = 'input'; if( isset($_POST['back']) && $_POST['back'] ){ //何もしない } else if( isset($_POST['confirm']) && $_POST['confirm'] ){ $_SESSION['name'] = $_POST['name']; $_SESSION['email'] = $_POST['email']; $_SESSION['category']= $_POST['category']; $_SESSION['message'] = $_POST['message']; $mode = 'confirm'; } else if( isset($_POST['send']) && $_POST['send'] ){ $mode = 'send'; } else { $_SESSION['name'] =""; $_SESSION['email'] =""; $_SESSION['category']=""; $_SESSION['message'] =""; } ?> <!DOCTYPE html> <html lang="ja"> <head> </head> <body> <div class="v_line_fix"> <h1>Blog K・T</h1> <h2><a href="index.html">トップページ</a></h2> <?php if( $mode=='input'){ ?> <form method=post> お名前(ニックネーム)<br> <input type="text" name="name" value="<?php echo $_SESSION['name'] ?>"><br> Eメール<br> <input type="email" name="email" value="<?php echo $_SESSION['email'] ?>"><br> カテゴリー<br> <input type="text" name="category" value="<?php echo $_SESSION['category'] ?>"><br> 本文<br> <textarea style="font-size:1.5em;" cols="30" rows="80" name="message"><?php echo $_SESSION['message'] ?></textarea><br> <input type="submit" name="confirm" value="確認" /> </form> <?php }else if( $mode=='confirm'){ ?> <!--確認画面--> <form method="post"> <?php echo $_SESSION['name']?><br> <?php echo $_SESSION['email']?><br> <?php echo $_SESSION['category']?><br> <br> <?php echo nl2br($_SESSION['message'])?><br> <input type="submit" name="back" value="戻る"/> <input type="submit" name="send" value="送信"/> } </form> <?php } else { ?> <!--完了画面--> <?php } ?> </body> </html>

    • ベストアンサー
    • PHP
  • PEARのAuth用のLoginFunctionが動かない

    $a = new Auth("MDB2", $options); のように第3引数を省略し、デフォルトのログイン画面を使うようにするとちゃんとログインできるのですが、自分で作った関数をログイン用に使おうとすると、$a->start()でフォームは表示されますがユーザー名などが入ってきていないようです。getAuthで認証の確認をすると失敗しています。どうして動かないのでしょうか? function loginFunction($username = null, $status = null, $auth = null) { /* * HTML出力は、作成するアプリケーションに合うように、 * 変更してください。 */ echo "<form method=\"get\" action=\"index.php\">"; echo "<input type=\"text\" name=\"username\">"; echo "<input type=\"password\" name=\"password\">"; echo "<input type=\"submit\">"; echo "</form>"; echo "ユーザー名:" . $username . "<br />\n"; //echo "Status:" . $status . "<br />\n"; }

    • 締切済み
    • PHP

専門家に質問してみよう