phpbb помощ

gamehack

Registered
Здравейте.На сайта ми имам система за регистрация.Искам във един phpbb3 форум да може да се логва със паролата и името дадени от таблицата на сегашната ми система за регистрация.Това е структурата на системата за регистрация от която искам да се вадят паролите и потребителското име.
http://www.prikachi.com/images/725/6628725B.png
 
PHP:
if(isset($_POST['send'])) {

/** Връзка с базата от данни */
$db = connectDB(); 


/** Таблицата може и да не се казва reg_users, ще си е промениш */

$usr = addslashes($_POST['user']);

/** Провери при другата логин система, какъв метод се ползва за хеширане и го добави към тази променлива $pass */
$pass =$_POST['pass'];


$sql = mysql_query("SELECT COUNT(*) FROM `reg_users` WHERE usr = $usr AND pass = $pass");


if($sql > 0) {
     echo 'You are logged in';
} else {
     echo 'You are not logged in, wrong user or pass';
}

}


Обяснения:
Потребителското име и парола идва от форма, от типа:

HTML:
<form method="post" action="yourLoginPage.php">
<input type="text" name="usr" />
<input type="password" name="pass" />
<input type="submit" name="send" value=" LOGIN " />
</form>


След като се изпрати тази информация до PHP скрипта, тя трябва да се обработи.
Променливата $usr, трябва да се валидира, преди да се изпрати към заявката. Това става чрез addslashes(); при този момент. Не използвам функции от типа на mysql_real_escape_string(); тъй като тя е вече премахната от PHP 5.5 (а незнам коя версия изпозлваш). Друго което искам да кажа е, че е възможно да се изпозлва друг начин за излвличане не инфо от базата данни, а това може да е чрез PDO, казам го защото предполагам изпозлваш някъква готова системата, а те може да използват PDO за връзка с базата данни. Тогав заявката към базата данни за проверка на usr и парола ще стане по този начин:

PHP:
 $sql = "SELECT COUNT(*) FROM `reg_users` WHERE usr = :usr AND pass = :pass";
        $query = $db->prepare($sql);
        $query->bindParam(':usr', $usr, PDO::PARAM_STR);
        $query->bindParam(':pass', $pass, PDO::PARAM_STR);
        $query->execute();
        $Result = $this->Count($query);
        if ($Result > 0) {
            return true;
        }
        return false;


При този метод може да не използваш addslashes(); PDO работи по друг начин. :))

И отново да кажа, че паролата в таблицата в mysql е възможно да е хеширана, виж по какъв начин е хеширана в регистър системата, за да е направиш при валидирането в този тип хеширане, иначе няма да работи така както очакваш от заявката.

Това е. :)))
 

Back
Горе