Помощ с логин скрипт

kanadeca

Registered
Имам следния логин код:
Код:
<?php
$host=""; // Име на хоста, обикновено е localhost 
$potr_ime=""; // Потребителско име за Mysql 
$parola=""; // Парола за Mysql 
$bd_ime=""; // База данни име
$tablica_ime=""; // Име на таблицата 

mysql_connect("$host", "$potr_ime", "$parola")or die("cannot connect"); 
mysql_select_db("$bd_ime")or die("cannot select DB");

$potrebitel=($_POST['potrebitel']);
$parola=md5($_POST['parola']);

$sql = mysql_query("SELECT * FROM $tablica_ime WHERE potrebitel='$potrebitel' AND parola='$parola'");
$num_rows = mysql_num_rows($sql);

if($num_rows == 1){

session_start();

$_SESSION['potrebitel'] = $potrebitel;

header("Location: index.php");

}
else {
echo "Unknown username or password";
}
mysql_close();

?>

Проблема е, че винаги ми дава "Unknown username or password". Дори когато съм въвел правилно всичко вместо да ме пренасочи към index-a ми дава това. :oops:
 
значи провери дали формата за регистрация те записва и дали те записва с md5 кодирана прола
 
така? и малко защита ти сложих :-)
Код:
<?php 
session_start();
$host=""; // Име на хоста, обикновено е localhost 
$potr_ime=""; // Потребителско име за Mysql 
$parola=""; // Парола за Mysql 
$bd_ime=""; // База данни име 
$tablica_ime=""; // Име на таблицата 

mysql_connect("$host", "$potr_ime", "$parola")or die("cannot connect"); 
mysql_select_db("$bd_ime")or die("cannot select DB"); 

$potrebitel=trim(htmlspecialchars($_POST['potrebitel'])); 
$parola=trim(htmlspecialchars(md5($_POST['parola']))); 

$sql = mysql_query("SELECT * FROM $tablica_ime WHERE potrebitel='$potrebitel' AND parola='$parola'"); 
$num_rows = mysql_num_rows($sql); 

if($num_rows == 1){  

$_SESSION['potrebitel'] = $potrebitel; 

header("Location: index.php"); 

} 
else { 
echo "Unknown username or password"; 
} 
mysql_close(); 

?>

mitko876 каза:
значи провери дали формата за регистрация те записва и дали те записва с md5 кодирана прола

може и да е ако има празно поле при логването преди име или след също и марола. затова е добре да се ползва trim()
 
Ами не става.Кода за регистрация работи и вписва данните в таблицата. Ето го и него:
Код:
<?php

$host=""; // Име на хоста, обикновено е localhost 
$potr_ime=""; // Потребителско име за Mysql 
$parola=""; // Парола за Mysql 
$bd_ime=""; // База данни име
$tablica_ime=""; // Име на таблицата 

mysql_connect("$host", "$potr_ime", "$parola")or die("cannot connect"); 
mysql_select_db("$bd_ime")or die("cannot select DB");

$potrebitel=($_POST['potrebitel']);
$parola=md5($_POST['parola']);
$email=($_POST['email']);
$ime=($_POST['ime']);

if (!$potrebitel) { die('Please enter a username'); }
if (!$parola) { die('Please enter a password'); }
if (!$email) { die('Please enter your e-mail address'); }


$sql = mysql_query("SELECT * FROM $tablica_ime WHERE potrebitel='$potrebitel'");
$num_rows = mysql_num_rows($sql);

if ($num_rows > 0) {
	die ('That username is already registered');
}

$sql2="INSERT INTO $tablica_ime(potrebitel, parola, email, ime)VALUES('$potrebitel', '$parola', '$email', '$ime')";
$result2=mysql_query($sql2);

if($result2){
header("Location: syzdaden_potrebitel.php");
}
else {
echo "ERROR";
}
mysql_close();
?>
Следващия файл syzdaden_potrebiel.php само пернасочва регистриралия се към формата за вход.

П.С. Jooorooo, можеш ли да ми обясниш в какво се състои защитата.
 
Код:
<?php 
session_start(); 
$host=""; // Име на хоста, обикновено е localhost 
$potr_ime=""; // Потребителско име за Mysql 
$parola=""; // Парола за Mysql 
$bd_ime=""; // База данни име 
$tablica_ime=""; // Име на таблицата 

mysql_connect("$host", "$potr_ime", "$parola")or die("cannot connect"); 
mysql_select_db("$bd_ime")or die("cannot select DB"); 

$potrebitel=trim(htmlspecialchars($_POST['potrebitel'])); 
$parola=trim(htmlspecialchars(md5($_POST['parola']))); 

$sql = mysql_query("SELECT * FROM $tablica_ime WHERE potrebitel='$potrebitel' AND parola='$parola'"); 
$num_rows = mysql_num_rows($sql); 

if($num_rows > 0){  

$_SESSION['potrebitel'] = $potrebitel; 

header("Location: index.php"); 

} 
else { 
echo "Unknown username or password"; 
} 
mysql_close(); 

?>

пробвай така :-)

а htmlspecialchars() служи за защита с-у mysql инжекции
 
kanadeca каза:
Galli каза:
$parola и за БД и за парола на усъра? Не е ли там проблема?
- Не е тук проблема.

jooorooo, не става!!! :cry:

естествено, че няма да стане.

<?php
session_start();
$host=""; // Име на хоста, обикновено е localhost
$potr_ime=""; // Потребителско име за Mysql
$parola=""; // Парола за Mysql
$bd_ime=""; // База данни име
$tablica_ime=""; // Име на таблицата

mysql_connect("$host", "$potr_ime", "$parola")or die("cannot connect");
mysql_select_db("$bd_ime")or die("cannot select DB");

$potrebitel=trim(htmlspecialchars($_POST['potrebitel']));
$parola=trim(htmlspecialchars(md5($_POST['parola'])));

$sql = mysql_query("SELECT * FROM $tablica_ime WHERE potrebitel='$potrebitel' AND parola='$parola'");
$num_rows = mysql_num_rows($sql);

if($num_rows > 0){

$_SESSION['potrebitel'] = $potrebitel;

header("Location: index.php");

}
else {
echo "Unknown username or password";
}
mysql_close();

?>

добре че Galli го забеляза.


Код:
<?php 
session_start(); 
$host=""; // Име на хоста, обикновено е localhost 
$potr_ime=""; // Потребителско име за Mysql 
$parola=""; // Парола за Mysql 
$bd_ime=""; // База данни име 
$tablica_ime=""; // Име на таблицата 

mysql_connect("$host", "$potr_ime", "$parola")or die("cannot connect"); 
mysql_select_db("$bd_ime")or die("cannot select DB"); 

$potrebitel=trim(htmlspecialchars($_POST['potrebitel'])); 
$parolauser=trim(htmlspecialchars(md5($_POST['parola']))); 

$sql = mysql_query("SELECT * FROM $tablica_ime WHERE potrebitel='$potrebitel' AND parola='$parolauser'"); 
$num_rows = mysql_num_rows($sql); 

if($num_rows > 0){  

$_SESSION['potrebitel'] = $potrebitel; 

header("Location: index.php"); 

} 
else { 
echo "Unknown username or password"; 
} 
mysql_close(); 

?>

П.П. оправи си и регистрацията:

Код:
<?php 

$host=""; // Име на хоста, обикновено е localhost 
$potr_ime=""; // Потребителско име за Mysql 
$parola=""; // Парола за Mysql 
$bd_ime=""; // База данни име 
$tablica_ime=""; // Име на таблицата 

mysql_connect("$host", "$potr_ime", "$parola")or die("cannot connect"); 
mysql_select_db("$bd_ime")or die("cannot select DB"); 

$potrebitel=($_POST['potrebitel']); 
$parolauser=md5($_POST['parola']); 
$email=($_POST['email']); 
$ime=($_POST['ime']); 

if (!$potrebitel) { die('Please enter a username'); } 
if (!$parola) { die('Please enter a password'); } 
if (!$email) { die('Please enter your e-mail address'); } 


$sql = mysql_query("SELECT * FROM $tablica_ime WHERE potrebitel='$potrebitel'"); 
$num_rows = mysql_num_rows($sql); 

if ($num_rows > 0) { 
   die ('That username is already registered'); 
} 

$sql2="INSERT INTO $tablica_ime(potrebitel, parola, email, ime)VALUES('$potrebitel', '$parolauser', '$email', '$ime')"; 
$result2=mysql_query($sql2); 

if($result2){ 
header("Location: syzdaden_potrebitel.php"); 
} 
else { 
echo "ERROR"; 
} 
mysql_close(); 
?>
 
kanadeca каза:
Не става. :roll:

Не те логва нали... това е защото като си се регнал е ползвало променливата за парола на ДБ. значи ползваи си за логин името с което си се регнал и паса за MySQL-а
 

Back
Горе