1

私は1つのユーザー名とパスワードを持つ次のphpスクリプトを持っています:

$Username = 'user1';
$Password = 'pass1';

/******************************************************************************/
if (isset($_POST['submitform'])){

    // Clean up the input values 
    foreach($_POST as $key => $value) {  
        $_POST[$key] = stripslashes($_POST[$key]); 
        $_POST[$key] = htmlspecialchars(strip_tags($_POST[$key])); 
    }
    $user = isset($_POST['user']) ? $_POST['user'] : '';
    $pass = isset($_POST['pass']) ? $_POST['pass'] : '';
    $report = $_POST['typereport'];

    if ($pass != $Password || $user != $Username) {
        showForm("Wrong Username/Password");
        exit();     
    }
} else {
    showForm();
    exit();
}

スクリプトをより堅牢にしたい、つまり、複数のユーザーがログインできるように他のユーザー名/パスワードを使用したい(追跡目的で必要)

$Usernameでは、スクリプトを変更して、次のforと$Password:を使用できるようにするにはどうすればよいですか。

$Username=array("user1","user2","user3");
$Password=array("pass1","pass2","pass3");

したがって、スクリプトは常に正しいユーザー名とパスワードと一致し、複数のユーザーを持つことができますか?

4

1 に答える 1

11

私はデータベースを使います。ハードコーディングする必要がある場合は、連想配列を使用します。

<?php
$logins = array(
    'username1' => 'password1',
    'username2' => 'password2',
    'username3' => 'password3',
);

$user = isset($_POST['user']) ? strtolower($_POST['user']) : '';
$pass = isset($_POST['pass']) ? $_POST['pass'] : '';

if ( ! isset($logins[$user]) or $logins[$user] != $pass)
{
    showForm("Wrong Username/Password");
    exit();
}
于 2013-03-08T17:43:33.733 に答える