こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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>

投稿日時 - 2009-06-30 17:43:53

QNo.5087280

困ってます

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

// ランダムパスワードを生成⇒表示。
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 ?>">

にして後は受け側で他のテキストと同様に処理するのでどうでしょう?

投稿日時 - 2009-06-30 18:08:11

お礼

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

この度は本当にありがとうございました。(^^)

投稿日時 - 2009-06-30 20:48:27

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問