Hejsa alle sammen, jeg er igang med at lave et login system hvor brugerens password er krypteret i databasen(MySQL).
Her er min checkauth.php fil:
- <?php
- include("validate.php"); // check om brugeren går direkte til link
- include("agent.php"); // Check om brugeren har MSIE.
- include("includes/rc4security.php"); // krypterings klasse.
- if(isset($_POST['login_form']) AND $_GET['p'] == 'verify') {
- $username = $_POST['username'];
- $password = $_POST['password'];
- if(strlen($username) <= 3 || strlen($password) <= 3) {
- echo "Too short username or password!";
- die();
- }
- if($username == $password) {
- echo "Invalid username and password";
- die();
- }
- $password_hash = new RC4Encryption();
- $password = $password_hash->encrypt($password);
- $data_validate = "select * from user WHERE username='$username' AND password='$password'";
- $data_validate_result = mysql_query($data_validate);
- $data_validate_count = mysql_num_rows($data_validate_result);
-
- if($data_validate_count >= 1){
- echo "success";
- } else {
- echo "lalalalal";
- }
- } else {
- exit("You should not be here");
- }
- ?>
Og her er min krypterings klasse:
- <?php
- include("validate.php");
- class RC4Encryption {
- private $Key;
-
- public function __construct() {
- $this->Key = "79ed8e6aq31ad3w";
- }
-
- private function RC4($string) {
- $keylength = strlen($this->Key);
- for($i = 0; $i < 256; $i++) {
- $s[$i] = $i;
- }
- for ($i = $j = 0; $i < 256; $i++) {
- $temp = 0;
- $j = ($j + ord($this->Key[$i % $keylength] + $s[$i])) & 255;
- $temp = $s[$i];
- $s[$i] = $s[$j];
- $s[$j] = $temp;
- }
- $i = $j = 0;
- $n = 0;
- $out = '';
- while($n < strlen($string)) {
- $i = ($i + 1) & 255;
- $j = ($j + $s[$i]) & 255;
- $temp = $s[$j];
- $s[$j] = $s[$i];
- $s[$i] = $temp;
- $out .= chr((ord($string[$n])) ^ ($s[($temp + $s[$j]) & 255]));
- $n++;
- }
- return $out;
- }
-
- public function encrypt($String) {
- return $this->RC4($String);
- }
-
- public function decrypt($String) {
- return $this->encrypt($String);
- }
- }
- ?>
Jeg krypteret test123 og smed det i databasen.
Og det ser sådan her ud: ð$ï¬,²É
Men i koden her:
if($data_validate_count >= 1){
echo "success";
} else {
echo "lalalalal";
} // får jeg "lalalalal";
Jeg har echo en masse ting, så i kan se hvad de giver.
- <?php
- include("validate.php"); // check om brugeren går direkte til link
- include("agent.php"); // Check om brugeren har MSIE.
- include("includes/rc4security.php"); // krypterings klasse.
- if(isset($_POST['login_form']) AND $_GET['p'] == 'verify') {
- $username = $_POST['username'];
- $password = $_POST['password'];
- if(strlen($username) <= 3 || strlen($password) <= 3) {
- echo "Too short username or password!";
- die();
- }
- if($username == $password) {
- echo "Invalid username and password";
- die();
- }
- $password_hash = new RC4Encryption();
- echo $password = $password_hash->encrypt($password); // ð$ï¬,²É
- $data_validate = "select * from user WHERE username='$username' AND password='$password'";
- $data_validate_result = mysql_query($data_validate);
- $data_validate_count = mysql_num_rows($data_validate_result); // echo: 0
-
- if($data_validate_count >= 1){
- echo "success";
- } else {
- echo "lalalalal";
- }
- } else {
- exit("You should not be here");
- }
- ?>
Og jeg forstår så ikke hvordan jeg ikke får success, når den indtastet kode er korrekt, og der mangler ingen paramenter(altså værdier af strenge), så jeg forstår ikke hvorfor jeg ikke får success!