私のコードで何が問題になったのかを理解しようとしています。それはcpへのログイン処理です。あなたは正しいユーザー名を書くときに正しい結果を得ます(ユーザー名はまだ、そのテストのためだけです)。あなたがしなければ、何も得られません - 私はそれを行うようにプログラムしたことはありません。間違ったユーザー名を入力しても何も起こりません。私のコードで何が間違っていますか?
私は本当に深刻な、これを一晩中解決しようとしました。私を助けてください。 ここにコードがあります。
計算:
場合(ISSET($ _ POST [ 'connection_madeは'])){//接続が行われていますか?隠し入力
$form_user = forms_filter($_POST['form_user']); // filter any tags or any unwanted actions first
$form_pass = forms_filter($_POST['form_pass']); // filter any tags or any unwanted actions first
if (strlen($form_user) > 5 AND strlen($form_user) < 16 AND strlen($form_pass) > 5 AND strlen($form_pass) < 16) {
if (login_blank_filter($form_user, $form_pass) == true) { // are those values length shorter than the minimal value or longer?
$user_name = $form_user;
$raw_password = $form_pass;
$user_pass = password_hash($raw_password, PASSWORD_DEFAULT); // generating a hashed and salted password
$cp_validate_login = mysqli_query($data_connection, "SELECT * FROM `admins` WHERE `username` = '$user_name' ");
if (!$cp_validate_login) { die('error: ' . mysql_error()); }
while ($admin_row = mysqli_fetch_array($cp_validate_login)) {
if (mysqli_num_rows($cp_validate_login) == 1) {
echo "you made it.";
echo mysqli_num_rows($cp_validate_login);
}
else {
echo "not yet there.";
echo mysqli_num_rows($cp_validate_login);
}
}
}
else {
header('Location: index.php?login_status=2');
}
}
}
フォームを使用して:
<?php
if (isset($_GET['login_status'])) {
switch ($_GET['login_status']) {
case 1:
echo "wrong username or password";
break;
case 2:
echo "the inputs has to be filled";
break;
case 3:
echo "username\passwords are too short or too long";
break;
default:
echo "unknown error";
}
}
else {
echo "welcome. log in to the control panel please";
}
?>
</div>
<form name="loginform" method="post" action="index.php" onSubmit="return validateBlank()">
<input type="hidden" name="connection_made" value="">
<div class="login_layout">
<div class="login_right_layout">
user:
</div>
<div class="login_left_layout">
<input class="login_input" name="form_user" type="text">
</div>
<div class="login_right_layout">
password:
</div>
<div class="login_left_layout">
<input class="login_input" name="form_pass" type="password">
</div>
</div>
<input type="submit" value="כניסה" class="login_submit">
</form>
</center>
私を助けてください。ありがとうございました。
まず、多くのおかげです。 1 - 問い合わせに危険なバールについて警告してくれてうれしいです。あなたが私に与えたリンクに問題があります - 私は理解できません。例はOOPによって書かれているからです。あなたは私に別の何かを与えてくれる? また、ソリューションに感謝します。 (おそらく目を覚ます24時間は最善のアイデアではない)自分自身を把握する必要があります。 somone else codeの使用について - これは私がしたくないことの1つです。もう一度、OOPの知識の欠如は、私がそれらと一緒に働くことを妨げる。 私の現在のコードをちょうど "パッチアップ"することはできますか?道による –
が、これは私がすべてのフィルタ処理方法です: 関数forms_filter($ form_value) { \tリターンにstripslashes(はhtmlspecialchars(strip_tags($ form_valueを))); } –
@OriRあなたの 'forms_filter()'関数はそれほど安全ではありません。唯一の安全なオプションはパラメータ付きの準備文です。誰かが '' OR 1 = 1 --'のようなユーザー名を送信すると、あなたのコードはその人に管理者アクセス権を与えます。他の誰かのコードを使うことについては、コードが何をしているのかを理解すれば、絶対に*あなたが何をすべきか、特に認証に関しては、*特に*です。私はあなたのやり方を考えていましたが、それは非常に危険です。あなたが現在のコードを単に "パッチアップ"すれば、必然的に他の大きな穴が欠けてしまうでしょう。フレームワークを使用して、ホイールを再開発する必要はありません。 –