PHPで生成した値をデータベースに送る方法

このQ&Aのポイント
  • PHPで自動生成した値(パスワード)とテキストをデータベースに送る方法を教えてください。
  • nyuryoku.phpとview.phpのコードを使って、入力画面上で生成した値をデータベースに送信したいですが、送信側の記述方法が分かりません。
  • どなたかご指導いただけますでしょうか?
回答を見る
  • ベストアンサー

PHPで生成した値をデータベースに送る方法

題名の通りです。入力画面上で自動生成させた値(今回はパスワード)を入力したテキストと一緒にデータベースへ送りたいと思ってますが行き詰りました。テキストは無事データベースへ送信されますがパスワードが送信されません。というか送信側の記述方法が分からず何も書いていないので当然ですがさっぱりです(;;)何卒、ご指導お願いします。(なお、プログラムの一部はネット上に公開していた物を使わせていただいております。) 【入力画面側 nyuryoku.php】 <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </HEAD> <BODY bgcolor="#FFFFFF" text="#000000"> <FORM name="form1" method="post" action="view.php"> <?php //----------------------// // パスワードを生成する // //----------------------// // パスワードの長さ設定 define(PASSWORD_LEN, 9); // 乱数表シードを決定 srand((double)microtime() * 12345678); // パスワード配列を作成 $pwelemstr = "abcdefghkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ2345679"; $pwelem = preg_split("//", $pwelemstr, 0, PREG_SPLIT_NO_EMPTY); // ランダムパスワードを生成⇒表示。 print makePassword(PASSWORD_LEN) . "\n"; // ランダムパスワードを生成する関数 function makePassword($length) { global $pwelem; $password = ""; for($i=0; $i<$length; $i++ ) { // パスワード文字列を生成 $password .= $pwelem[array_rand($pwelem, 1)]; } return $password; } ?> <BR><BR> BACK_PASS<BR> <INPUT type="text" name="back_pass"> <BR> FRONT_PASS<BR> <INPUT type="text" name="front_pass"> <BR><BR> <INPUT type="submit" value="送 信"> </FORM> </BODY> </HTML> 【送信側 view.php】 <HTML> <HEAD> <TITLE>view.php</TITLE> </HEAD> <BODY> <?php require_once("DB.php"); $dbUser = "USER"; // ユーザー名 $dbPass = "PASS"; // パスワード $dbHost = "LOCALHOST"; // ホスト名 $dbName = "DATABASE"; // データベース名 $dbType = "mysql"; // データベースの種類 $dsn = "$dbType://$dbUser:$dbPass@$dbHost/$dbName"; // データベースに接続 $conn = DB::connect($dsn); // 接続に失敗したらメッセージを表示して終了。 if (DB::isError($conn)){ die($conn->getMessage()); } // POSTされたデータを受け取り、エスケープ。 $back_pass = addslashes($_POST['back_pass']); $front_pass = addslashes($_POST['front_pass']); $sql = <<<EOS INSERT INTO passkanri ( back_pass, front_pass ) VALUES ( '$back_pass', '$front_pass' ) EOS; if(preg_match("/Windows/", $_ENV["OS"])){ $sql = mb_convert_encoding( $sql, "SJIS", "EUC-JP"); } // SQL文を発行 $result = $conn->query($sql); if (DB::isError($result)) { die ($result->getMessage()); } $count = $conn->affectedRows(); print "データを" . $count . "件、挿入しました。"; // データベースから切断します。 $conn->disconnect(); ?> </BODY> </HTML>

  • MySQL
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • ma-tsu
  • ベストアンサー率32% (190/593)
回答No.1

// ランダムパスワードを生成⇒表示。 print makePassword(PASSWORD_LEN) . "\n"; ここを // ランダムパスワードを生成⇒表示。 $main_pass = makePassword(PASSWORD_LEN); print $main_pass . "\n"; で<form>~</form>間に <INPUT type="hidden" name="main_pass" value="<?= $main_pass ?>"> にして後は受け側で他のテキストと同様に処理するのでどうでしょう?

kohkun2008
質問者

お礼

(;;)すごい!完璧です!!! 2日悩んだことが一発で解決しました。 これからFLASHとの連携でまた悩むと思います。 その時はまたご指導お願いいたしますm(_ _)m この度は本当にありがとうございました。(^^)

関連するQ&A

  • phpとデータベース

    書籍のサンプルを実行しても表示されません pearのインストールが怪しいですが、どこを直せばいいかわかりません。 ご教授お願いいたします。 <HTML> <HEAD> <TITLE>PHPのテスト</TITLE> </HEAD> <BODY> <?php require_once("DB.php"); $dbUser = "sample"; // ユーザー名 $dbPass = "password"; // パスワード $dbHost = "localhost"; // ホスト名 $dbName = "sampledb"; // データベース名 $dbType = "mysql"; // データベースの種類 // MySQL="mysql", PostgreSQL="pgsql", MS SQL-Server="mssql", ODBC="odbc" などを設定 // 接続文字列の作成 $dsn = "$dbType://$dbUser:$dbPass@$dbHost/$dbName"; // データベースに接続 $conn = DB::connect($dsn); // 接続に失敗したらメッセージを表示して終了します。 if (DB::isError($conn)){ die($conn->getMessage()); } print('接続に成功しました。'); // データベースから切断します。 $conn->disconnect(); ?> </BODY> </HTML>

  • 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
  • PHP+mySQL認証画面

    サーバーの引っ越しで新しいサーバーにてプログラムの動作確認を行っています。 管理者パネルに入るのに、PHPで作成した認証プログラムでログインしようとすると、入力しても何度も聞いてきて入れません。 旧 MySQL5.0.22   phpMyAdmin2.8.2.4 新 MySQL5.1.69 phpMyAdmin3.5.8.1  IDとパスワードはデータベースで設定。 管理者パネルで変更できるようになっている。 $sv = "**"; $dbname = "**"; $user = "**"; $pass = "**"; ログイン認証 //データベースに接続する $conn = mysql_connect($sv,$user,$pass) or die("接続エラー"); mysql_select_db($dbname) or die("データーベース接続エラー"); $sql = "SELECT id, pass FROM pass_t WHERE pno=1"; $res = mysql_query($sql, $conn) or die("データ抽出エラー"); while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { $db_user_id=$row['id']; $db_password=$row['pass']; } if(!isset($_SERVER["PHP_AUTH_USER"]) || $_SERVER["PHP_AUTH_USER"] != "$db_user_id" || $_SERVER["PHP_AUTH_PW"] != "$db_password") { header("WWW-Authenticate: Basic realm=\"login\""); header('HTTP/1.0 401 Unauthorized'); echo "ユーザー名またはパスワードが間違っています。<br>"; echo "もう一度はじめからやり直してください。"; exit; } 細々変えて試してみましたが駄目でした。 まだまだわからないことだらけの初心者なので、どうにもならずで 解決策がありましたらぜひ教えて頂けますと幸いです。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • PHPでデータベース(mySQL)から値を取りだすには

    PHPで値をmySQLに保存するコードを作成するのに 成功したのはいいのですが、値を取り出して 出力するコードがうまく書けません ネットで調べてみたり、参考書を読んで やっているのですがうまくいきません こういうコードを書いたのですが <?php $conn=mysql_connect("localhost", "user", "pass"); if (!$conn) { die('接続失敗です。'.mysql_error()); } mysql_select_db("database", $conn); mysql_query("SET NAMES 'ja-utf8'", $conn); $sql='SELECT caram, FROM table'; $row=mysql_query($sql, $conn); $res=mysql_fetch_assoc($row); echo htmlspecialchars($res, ENT_QUOTES); mysql_close(); ?> どこが間違っているかご指摘いただけると ありがたいです。

    • 締切済み
    • PHP
  • フォーム入力パスワードとランダム生成されたパスワードを比較

    現在フォームから入力パスワードと PHP でランダム生成された パスワードを比較するスクリプトを組んでます。 スクリプト自体はテスト用ですので フォーム入力用のパスワードは HTML 上に表示されるように なっており、それをコピー&ペーストすれば 良いようにはなっているのですが、どうやっても 比較結果が true になりません。 もはやどこが間違っているのかわかりません。 どなたかお教え頂ければ大変助かります。 何卒、宜しくお願い致します。 ファイル構成は 3つです↓ ran_pass.html ran_pass.php kekka.php --<< 1. フォーム入力 HTML [ ran_pass.html ] ↓ >>------------------------------------------------------------------------------- <html> <head> <title>名前入力</title> </head> <body> <u>名前入力</u><br> <form action="ran_pass.php" method="post" name=""> 名前 : <input type="text" name="name" size="24" border="0"> <input type="submit" name="" value="実行" border="0"> </form> </body> </html> --<< 2. ランダムパスワード生成 [ ran_pass.php ] ↓ >>--------------------------------------------------------------------------- <html> <head> <title>ランダムパスワード生成</title> </head> <body> <?php //フォームからのデータを $name に代入↓ // $name = $_POST[name]; //ランダムパスワードを生成 ↓// function rand_passwd($len = 8, $str = '0123456789abcdefghijklmnopqrstuvwxyz'){ $password = ''; srand ((float) microtime() * 10000000); for($i = 0; $i < $len; $i ++){ $password .= substr($str, rand(0, strlen($str) - 1), 1); } return $password; } //生成されたランダムパスワードを $rpass に代入 ↓// $rpass = rand_passwd(8) . "\n"; $htm = <<< EOD <u>ランダムパスワード生成</u><br> <form action="kekka.php" method="post" name=""> 名前 : $name さん<br><br> パスワード : <input type="text" name="ran_pass" size="24" border="0"> <input type="submit" name="" value="実行" border="0"><br> <input type="hidden" name="name" value="$name" border="0"> <input type="hidden" name="rpass" value="$rpass" border="0"><br> ( ※ パスワードは $rpass です。) </form> EOD; print $htm; ?> </body> </html> --<< 3. パスワード比較 [ kekka.php ] ↓ >>-------------------------------------------------------------------------------------- <html> <head> <title>パスワード認証結果</title> </head> <body> <?php //フォームからのデータを代入↓ // $name = $_POST[name]; $ran_pass = $_POST[ran_pass]; $rpass = $_POST[rpass]; //ランダムパスワードを生成 ↓// if($ran_pass == $rpass){ $kekka = "【 成功 】 パスワードが一致しました。";} else{$kekka = "【 失敗 】 パスワードが一致しませんでした。";} print $kekka; ?> </body> </html>

    • ベストアンサー
    • 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
  • phpによるデータベース操作について(MySQL)

    http://www.yc.tcu.ac.jp/~yamada/doc/mysql/win/0602.html のサイトを参考に以下のような「データベースの内容を表示させる」プログラムを書いたのですが、うまく表示されません。(webブラウザで確認したところまっさらなページで何も表示されません) ちなみに、私はレンタルサーバを借りており、その中で作成したデータベースにphpMyAdminにてテーブルやカラムの作成を行いました。以下のプログラムは「db_sample.php」という名前で保存(エンコード:utf-8)し、レンタルサーバーの公開しているフォルダ「httpdocs」にffftpにてアップロードしています。バージョンは、phpMyAdmin2.11.11.3と、php4.1?(最新の5.2よりひとつ前のもの) ここでは仮に ホスト名:aaa.com (←これは独自に作成したドメイン名でいいのかな?) ユーザー名:user パスワード:pass データベース名:db テーブル名:person とします。 ----------以下プログラム------------ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <title></title> </head> <body> <?php //データベースサーバ名の設定 $db_host = "aaa.com"; //ユーザ名の設定 $db_user = "user"; //パスワードの設定 $db_passwd = "pass"; //データベースサーバへの接続 $db = mysql_connect($db_host,$db_user,$db_passwd); //データベース名の設定 $db_name = "db"; //データベースの選択 mysql_select_db($db_name,$db); //SQL文の設定 $str_sql = "select * from person"; //SQL文の実行 $rs = mysql_query($str_sql,$db); //結果セット内の各レコードを順次参照し、連想配列に代入 while($arr_item = mysql_fetch_assoc($rs)) { //レコード内の各フィールド名と値を順次参照 foreach($arr_item as $key => $value) { //フィールド名と値を表示 print "[{$key}] = {$value}<br>\n"; } print "<br>\n"; } //データベースサーバへの接続の切断 mysql_close($db); ?> </body> </html> ------------------------------------------ わかる方いらっしゃいましたらご教授願います。

  • 値が渡りません。

    すごく初歩的な質問ですみません。 以下の2ソースでpostで値が渡りません。 いろいろ調べましたがわかりません。 宜しくご教授いただけるとたすかります。 【test_dev.php】 <h1><Font Color = "red">ホームページ</Font></h1><br> <br> <form action="test_dev02.php" metod="post" enctype="application/x-www-form-urlencoded"> ID:<input type="text" name="id" size="10" value="" > pass:<input type="text" name="pass" size="10" value="" > <input type="submit" value="送信"><br> </form><br> What's new<br> 【test_dec02.php】 <?php $ID="test-use"; $pass="test-dev"; $ID2=$_POST["id"]; $pass2=$_POST["pass"]; print "IDは ".$ID2."です。パスワードは ".$_POST["pass"]."です。"; print $ID2; echo $_POST["pass"]; ?> ユーザー認証プログラム

    • ベストアンサー
    • PHP
  • テキストボックスにデータベースの値を反映させるには

    とても初歩的な質問だと思いますが、回答よろしくお願いします。 データベースに保存した値を更新するページのテキストボックスに、データベースの現在値を反映させたいです。 使っている本には、フォーム要素のvalue属性に対応するフィールド値を反映させる、と書いてあるのですが、その通りにやってもできません。 edit.php <?php try { $db = new PDO('mysql:host=●●;dbname=●●;charset=utf8', '●●', '●●'); $stt = $db->prepare('SELECT name, email, password FROM `users` WHERE number = :number'); $stt->bindValue(':number', $_GET['number']); $stt->execute(); } catch(PDOException $e) { die('Error:'.$e->getMessage()); } ?> <?php /* print($_GET['number']); */ ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>インフォメーション</title> </head> <body> <h3>あなたの登録情報</h3> <form method="POST" action="dbconnect4.php"> <input type="hidden" id="number" name="number" maxlength="3" value="<?php print($row['number']); ?>" /> <div class="container"> <label for="name">ユーザ名</label><br/> <input type="text" id="name" name="name" size="10" maxlength="20" value="<?php print($row['name']); ?>" /> </div><br /> <div class="container"> <label for="email">メールアドレス</label></br /> <input type="text" id="email" name="email" size="30" maxlength="100" value="<?php print($row['email']); ?>" /> </div><br /> <div class="container"> <label for="password">パスワード</label><br /> <input type="password" id="password" name="password" maxlength="20" value="<?php print($row['password']); ?>" /> </div><br /><br /> <input type="submit" name="update" value="更新する" /> <input type="submit" name="delete" value="削除する" onclick="return confirm('本当に削除してよろしいですか?')" /> </form> </body> </html> information.php <?php try { $db = new PDO('mysql:host=●●;dbname=●●;charset=utf8', '●●', '●●'); $stt = $db->prepare('SELECT name, email, password FROM `users` WHERE email = :email AND password = :password '); $stt->bindValue(':email', $_POST['email']); $stt->bindValue(':password', $_POST['password']); $stt->execute(); } catch(PDOException $e) { die('Error:'.$e->getMessage()); } ?> <?php /* print($_POST['email']); print($_POST['password']); */ ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>インフォメーション</title> </head> <body> <h3>あなたの登録情報</h3> <table border="1"> <tr> <th>ユーザ名</th><th>メールアドレス</th><th>パスワード</th><th></th> </tr> <?php while ($row = $stt->fetch()) { ?> <tr> <td><?php print($row['name']); ?></td> <td><?php print($row['email']); ?></td> <td><?php print($row['password']); ?></td> <td><a href="edit.php?number=<?php print($row['number']); ?>">編集する</a></td> </tr> <?php } ?> <br /><br /> </body> </html> information.phpの編集する、というリンクからedit.phpに飛ぶようになっています。 information.phpの前の画面でパスワードとメールアドレスを入力し、それらが一致したらinformation.phpでレコードを抜き出すという仕様になっています。 回答よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP ログインシステムについて

    お世話になります 現在ローカルで下記PHPのテストを行っています PHP初心者の為、セキュリティ面並びに不具合が心配で書き込みさせて頂きました 恐れ入りますがおかしな点がないかチェックして頂けませんでしょうか 宜しくお願いいたします データベースのバージョンはMySQL 5.5です ***************************************** <?php session_start(); $error_message = ""; if (isset($_POST["login"])) { $id = htmlspecialchars($_POST['id']); $password = htmlspecialchars(base64_encode(pack('H*', sha1($_POST['password'])))); $_SESSION['id'] = $_POST['id']; $_SESSION['password'] = $_POST['password']; $db = mysql_connect("***","***","***"); if (!$db) { die('接続失敗です。'.mysql_error()); } mysql_set_charset("utf8"); $db_selected = mysql_select_db("***", $db); if (!$db_selected){ die('データベース選択失敗です。'.mysql_error()); } $result = mysql_query("SELECT * FROM ***"); if (!$result) { die('クエリーが失敗しました。'.mysql_error()); } function x($result) { return mysql_real_escape_string($result); } while ($row = mysql_fetch_assoc($result)) { if($id == $row['id'] && $password == $row['password']){ header("Location:./instance.php"); } } $_SESSION = array(); if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time()-42000, '/'); } session_destroy(); $error_message = "ユーザ名もしくはパスワードが違っています。"; } ?> <html> <head><title>ログイン</title> <meta http-equiv=Content-Type content="text/html; charset=utf-8"> <link rel="stylesheet" type="text/css" href="style.css" media="screen" /> </head> <body> <?php if ($error_message) { print '<font color="red">'.$error_message.'</font>'; } ?> <form action="login.php" method="post"> ID:<input type="text" name="id"><br /> PASS:<input type="password" name="password"><br /> <input type="submit" name=login value="認証"> </form> </body> </html>

    • 締切済み
    • PHP