ここから本文です

現在ログインページを作成しているのですがテキストボックス内にVALUEを設定...

アバター

ID非公開さん

2016/1/1822:04:44

現在ログインページを作成しているのですがテキストボックス内にVALUEを設定していないのに値がはいっています。何が原因なのでしょう?

以下テキスト
/**************************************************************************************/
<?php

ini_set('default_charset', 'Shift_JIS');
define('Charset', 'Shift_JIS');
$err="";
if(!empty($_POST['id']) && !empty($_POST['pass'])){
$con = new mysqli("localhost","root","","sinryo");
//DBのオープンに成功したかの検査
$con->set_charset('sjis');
if ($con->connect_error) {
die('データベースへ接続できませんでした。');
}
//文字コードの設定
if (!$con->set_charset('sjis')) {
die('データーベースへの文字コードのセットに失敗しました。');
}
$stmt = $con->prepare('select name1, name2 from kanja where kanjaid = ? and pass = ?');
$stmt->bind_param('ii', $_POST['id'], $_POST['pass']);//入力した値を実体化
$stmt->execute();
$stmt->bind_result($name,$name2);
$id=$_POST['id'];
if($stmt->fetch()){
$name = $name . $name2;
setcookie('id_cookie', $_POST['id'], time() + 3600);
setcookie('name_cookie', $name,time() + 60 * 60 * 24);
header('HTTP/1.0 302 Redirect');
header('Location: mypage.php');//サーバー利用時はURL変更

exit;
} else {
$err = "IDもしくはPASSが間違っています。";
}
} elseif(isset($_POST['id']) || isset($_POST['pass'])) {//関数宣a言の確認
$err = "IDもしくはパスワードが入力されてません。";
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<link rel="stylesheet" type="text/css" href="css/pppppp.css">
<meta charset="Shift_JIS">
<title>患者様ログイン画面</title>
<link rel="stylesheet" type="text/css" href="style.css" media="all" />
</head>

<div id="form">
<p class="form-title">患者様ログイン</p>
<form method="post"><input type="hidden" name="PHPSESSID" value="xR2SApmybD5E3Xvr9Jbcr5GRc0e" />
<p><?= $err ?></p>
<p>I D</p>
<p class="text"><input type="text" name="id" value="00000000"/></p>
<p>パスワード</p>
<p class="pass"><input type="password" name="pass" value="00000000" /></p>
<left><a href="index.html" >トップページへ</a></left>
<p class="submit"><input type="submit" value="Login" /></p>
</form>
</div>
</body>
</html>
/**************************************************************************************/

閲覧数:
83
回答数:
2
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tezcelloさん

2016/1/1900:19:10

> テキストボックス内にVALUEを設定していないのに値がはいっています
えっ?
ご提示の HTML は
<input type="text" name="id" value="00000000"/>
<input type="password" name="pass" value="00000000" />
このようにセットしてますけど?



> ini_set('default_charset', 'Shift_JIS');
> define('Charset', 'Shift_JIS');
定義した定数を使ってないですけど?
順序を逆にして、定数を使う様にしては?
define('Charset', 'Shift_JIS');
ini_set('default_charset', Charset);

さらに default_charset を Shift_JIS にしなければならない事はほぼないと思います。
__DBも含めて


> if(!empty($_POST['id']) && !empty($_POST['pass'])
二重否定は間違えやすいと思う。
(isset($_POST['id']) and isset($_POST['pass'])) が真なら、(できればトークンのチェックもしてOKなら)POSTされたとしてDBに該当するレコードがあるかを確認すればよいのでは?

その上で、(empty($_POST['id'] or empty($_POST['pass'])) が真ならどちらか、あるいは両方が空、または0だとして再入力を促すってのが読み易くなると思うけど。


> $con->set_charset('sjis');
> ...
> if (!$con->set_charset('sjis')) {
> die('データーベースへの文字コードのセットに失敗しました。');
> }
なぜ2回も $con->set_charset('sjis') する必要が?

その前の
die('データベースへ接続できませんでした。');
も含めて、失敗した時に die でエラーメッセージを吐くのには特にコメントが無いけど本番時もこのままなんて事は無いですよね?


> <input type="hidden" name="PHPSESSID" value="xR2SApmybD5E3Xvr9Jbcr5GRc0e" />
このようにセッションIDを直接書いてしまう事は無いと思うけど?
__少なくても 定数 SID を使うでしょう

ベストアンサー以外の回答

1〜1件/1件中

chi********さん

2016/1/1822:20:53

>設定していないのに値がはいっています。何が原因なのでしょう?

仕様ですよ。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる