Логин система

mitko456

Registered
Здравейте седнах да напиша една логин система обаче имам проблем след като добавих md5 + salt.
register.php
PHP:
<?php
include_once 'conf.php';
$date = date("d.m.20y");
echo "<form action='?user=add' method='post'>"
."Username: <input type='text' name='username' size='30'><br>"
."Password: <input type='password' name='password' size='30'><br>"
."Confirm your password: <input type='password' name='password2' size='30'><br>"
."Email: <input type='text' name='email' size='30'><br>"
."<input type='hidden' name='date' value='$date'>"
."<input type='submit' name='submit' value='Регистрация'>"
."</form>";
If (isset($_POST['submit'])) {
$username = addslashes(htmlspecialchars($_POST['username']));
$salt = "deal";
$password = trim($salt.$_POST['password']);
$pass2 = trim(addslashes(htmlspecialchars($_POST['password2'])));
$email = addslashes(htmlspecialchars($_POST['email']));
$date = addslashes(htmlspecialchars($_POST['date']));
$select = mysql_query("SELECT username FROM users WHERE username = '$username'");
$num = mysql_num_rows($select);
if(empty($username)) $str = "Моля въведете Потр.име!<br>";
if(empty($password)) $str ="Моля въведете парола!<br>";
if(empty($pass2) ) $str ="Моля повторете паролата!<br>";
If (strlen($password) < 5) $str = "Моля въведете парола по голяма от 5 знака!<br>";
if(empty($email)) $str ="Моля въведете e-mail!";
If ($password != $pass2) $str="Паролите не съвпадат!";
if($num > 0) $str = "Такъв потребител вече съществува!<br>";
echo $str;
If (empty($str)) {
$insert = mysql_query("INSERT INTO users (username, password, email,date) VALUES ('$username', md5('$password'), '$email','$date')");
echo "Добре дошъл ," .$username.'<br><a href="login.php">Влез</a>';
mysql_close();
}
}
?>
Проблема ми идва когато трябва да се логна постояно ми дава паролата не е правилна :
PHP:
<?php
include_once 'conf.php';
echo "<form action='?user=login' method='post'>"
."Username: <input type='text' name='username' size='30'><br>"
."Password: <input type='password' name='password' size='30'><br>"
."<input type='submit' name='submit' value='Регистрация'>"
."</form>";
If (isset($_POST['submit'])) {
$username = $_POST['username'];
$salt = "deal";
$pass = $_POST['password'];
$epass= md5($salt.$pass);
$select = mysql_query("SELECT * FROM users WHERE username='$username' AND password='$epass'");
$num = mysql_fetch_array($select);
$user = $num['username'];
If (!$username = $user){echo"Wrong password or username!";}
echo '<a href="index.php">index</a>';
session_register("username", $username);
session_register("password", $password);
}
?>
 
Код:
$password = trim(addslashes(htmlspecialchars($salt.$_POST['password'])));
$pass2 = trim(addslashes(htmlspecialchars($salt.$_POST['password2'])));
Замести го в кода ти.

Едит и това може да промениш:

Код:
$insert = mysql_query("INSERT INTO users (username, password, email,date) VALUES ('$username', md5('$password'), '$email','$date')");

на
Код:
$hashedpassword = md5($password);
$insert = mysql_query("INSERT INTO users (username, password, email,date) VALUES ('$username', '$hashedpassword', '$email','$date')");
 
Fakeheal каза:
Код:
$password = trim(addslashes(htmlspecialchars($salt.$_POST['password'])));
$pass2 = trim(addslashes(htmlspecialchars($salt.$_POST['password2'])));
Замести го в кода ти.

Това го имам но понеже този ред за pass2 го писах ръчно не съм сложил $salt а проблема ми е в login.php - register.php работи както искам.
Не иска да ме логва и немога да си обясня защо !
 
mitko456 каза:
Fakeheal каза:
Код:
$password = trim(addslashes(htmlspecialchars($salt.$_POST['password'])));
$pass2 = trim(addslashes(htmlspecialchars($salt.$_POST['password2'])));
Замести го в кода ти.

Това го имам но понеже този ред за pass2 го писах ръчно не съм сложил $salt а проблема ми е в login.php - register.php работи както искам.
Не иска да ме логва и немога да си обясня защо !

Промених си поста, погледни по-горе d:- )
 
Видях го но все още не ме логва.

До колкото видях твойте кодове са изцяло върху register.php казах че той не ми прави проблеми нещата,който си дала/дал смятах да ги направя да заработи просто исках сега по бързата процедура.
 
Код:
<?php
include_once 'conf.php';
echo "<form action='?user=login' method='post'>"
."Username: <input type='text' name='username' size='30'><br>"
."Password: <input type='password' name='password' size='30'><br>"
."<input type='submit' name='submit' value='Регистрация'>"
."</form>";
If (isset($_POST['submit'])) {
$username = $_POST['username'];
$salt = "deal";
$pass = $_POST['password'];
$epass= md5($salt.$pass);
$select = mysql_query("SELECT * FROM users WHERE username='$username' AND password='$epass'");
$num = mysql_num_rows($select);
if ($num<=0){echo"Wrong password or username!";} else {
echo '<a href="index.php">index</a>';
session_register("username", $username);
session_register("password", $pass);
}
?>
 
А ако ти дава грешка на реда със session_start(); добави ob_start(); и ако пак дава грешка смени енкодинга на UTF 8 без BOM.

//личен опит...
 
Vladkata каза:
А ако ти дава грешка на реда със session_start(); добави ob_start(); и ако пак дава грешка смени енкодинга на UTF 8 без BOM.

//личен опит...
Няма да му дава грешка. :)
 
PHP:
If (isset($_POST['submit'])) {
$username = $_POST['username'];
$salt = "deal";
$pass = $_POST['password'];
$epass= md5($salt.$pass);
$select = mysql_query("SELECT * FROM users WHERE username='$username' AND password='$epass'");
if(mysql_num_rows(select) == 1){
$user = mysql_fetch_assoc($select);
$_SESSION['username'] = $user['username'];
}
else{
echp 'Wrong username/password;';
}
echo '<a href="index.php">index</a>';
session_register("username", $username);
session_register("password", $password);
и в index.php
PHP:
<?php
session_start();
$user = $_SESSION['username'];
echo 'Hello'.$user;
?>
 
Хора това с session_start го ползвам вече - не съм казал че имам проблеми с хедърите.

ob_start не е полезен ако неможеш да си наредиш хеадърите си го ползвайте.

Така кода не стана страшно съм благодарен,че се отзовавате направо ми е мистерия ,защо не става.
 
Добре ако направя кода така:
PHP:
<?php
session_start();
?>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251" />
<center>
<?php
include_once 'conf.php';
echo "<form action='?user=login' method='post'>"
."Username: <input type='text' name='username' size='30'><br>"
."Password: <input type='password' name='password' size='30'><br>"
."<input type='submit' name='submit' value='Регистрация'>"
."</form>";
If (isset($_POST['submit'])) {
$username = $_POST['username'];
$pass = $_POST['password'];
$select = mysql_query("SELECT * FROM users WHERE username='$username' AND password='$pass'");
$num = mysql_num_rows($select);
if ($num<=0){echo"Wrong password or username!";} else {
echo '<a href="index.php">index</a>';
session_register("username", $username);
session_register("password", $pass);
}
}
?></center>

PHP:
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251" /> 
<center>
<?php
include_once 'conf.php';
$date = date("d.m.20y");
echo "<form action='?user=add' method='post'>"
."Username: <input type='text' name='username' size='30'><br>"
."Password: <input type='password' name='password' size='30'><br>"
."Confirm your password: <input type='password' name='password2' size='30'><br>"
."Email: <input type='text' name='email' size='30'><br>"
."<input type='hidden' name='date' value='$date'>"
."<input type='submit' name='submit' value='Регистрация'>"
."</form>";
If (isset($_POST['submit'])) {
$username = addslashes(htmlspecialchars($_POST['username']));
$password = trim(addslashes(htmlspecialchars($_POST['password'])));
$pass2 = trim(addslashes(htmlspecialchars($_POST['password2'])));
$email = addslashes(htmlspecialchars($_POST['email']));
$date = addslashes(htmlspecialchars($_POST['date']));
$select = mysql_query("SELECT username FROM users WHERE username = '$username'");
$num = mysql_num_rows($select);
if(empty($username)) $str = "Моля въведете Потр.име!<br>";
if(empty($password)) $str ="Моля въведете парола!<br>";
if(empty($pass2) ) $str ="Моля повторете паролата!<br>";
If (strlen($password) < 5) $str = "Моля въведете парола по голяма от 5 знака!<br>";
if(empty($email)) $str ="Моля въведете e-mail!";
If ($password != $pass2) $str="Паролите не съвпадат!";
if($num > 0) $str = "Такъв потребител вече съществува!<br>";
echo $str;
echo $password;
If (empty($str)) {
$insert = mysql_query("INSERT INTO users (username, password, email,date) VALUES ('$username', '$password', '$email','$date')");
echo "Добре дошъл ," .$username.'<br><a href="login.php">Влез</a>';
mysql_close();
}
}
?></center>
Всичко бачка без грешка,но сложа ли md5 + salt не става.
 
Fakeheal каза:
Ами виж дали полето ти в базата данни събира генерираната нова парола (след като си я md5-нал и salt-нал :) )
оф боже аз съм дал 15 знака :D
Все пак излезе че кога е верен :D
 
mitko456 каза:
Fakeheal каза:
Ами виж дали полето ти в базата данни събира генерираната нова парола (след като си я md5-нал и salt-нал :) )
оф боже аз съм дал 15 знака :D
Все пак излезе че кога е верен :D

И после ходи се чуди каква е грешката, хаха. И на мен ми се е случвало подобно нещо :)
 

Back
Горе