PHP - MYSQL - Egyszerű (SESSION alapú) bejelentkező rendszer
Sziasztok srácok!
Új vagyok az fórumban, de máris lenne egy kérdésem hozzátok! Kezdő PHP-s tudásommal csináltam egy egyszerű (SESSION alapú) bejelentkező rendszert, de nem akar működni, és a segítségeteket kérném, mert akármit csinálok, nem jövök rá a hiba okára... Bele is vágok a közepébe:
telepites.php:bejelentkezes_0.php:bejelentkezes_1.php:bejelentkezes_2.php:index.php:Ha valaki megmondja, hogy mi a baja, hálás leszek, én már két napja nézegetem, de egyszerűen semmi...
■ Új vagyok az fórumban, de máris lenne egy kérdésem hozzátok! Kezdő PHP-s tudásommal csináltam egy egyszerű (SESSION alapú) bejelentkező rendszert, de nem akar működni, és a segítségeteket kérném, mert akármit csinálok, nem jövök rá a hiba okára... Bele is vágok a közepébe:
telepites.php:
<?php
$con = mysql_connect("localhost","v630i-w660i","XYZ");
if (!$con)
{
die('Sikertelen kapcsolódás: ' . mysql_error());
}
mysql_select_db("v630i-w660i", $con);
$sql = "CREATE TABLE Adminisztratorok
(
id MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
felhasznalonev VARCHAR(50),
jelszo VARCHAR(50)
email VARCHAR(50)
)";
mysql_query($sql,$con);
$jelszo = md5('Attiss');
$sql = "INSERT INTO Adminisztratorok (id, felhasznalonev, jelszo, email) VALUES
(
'',
'Fábián Attila',
'".$jelszo."',
'xyz##kukac##freemail.hu'
)";
mysql_query($sql,$con);
mysql_close($con);
echo "<head>"
. "<title>Telepítés</title>"
. "<meta name=\"description\" content=\"\" />"
. "<meta name=\"keywords\" content=\"\" />"
. "<meta name=\"author\" content=\"Fábián Attila\" />"
. "<meta http-equiv=\"content-type\" content=\"text/html;charset=iso-8859-2\" />"
. "<link rel=\"stylesheet\" type=\"text/css\" href=\"../stilus.css\" />"
. "</head>"
. "<body>"
. "<font face=\"Verdana\" color=\"#FFFFFF\">"
. "<div class=\"sikeres_\"></div>"
. "<div class=\"sikeres\">"
. "<center>"
. "<p>"
. "A telepítés sikeresen lezajlott!<br />"
. "<a href=\"../index.php\">Adminisztrációs felület</a>"
. "</p>"
. "</center>"
. "</div>"
. "</font>"
. "</body>"
. "</html>";
?>
<?php
$adatbazis_host = 'localhost';
$adatbazis_nev ='v630i-w660i';
$adatbazis_felhasznalonev ='v630i-w660i';
$adatbazis_jelszo ='XYZ';
mysql_connect ($adatbazis_host, $adatbazis_felhasznalonev, $adatbazis_jelszo);
mysql_select_db($adatbazis_nev);
print "
<html>
<head>
<title>Bejelentkezés</title>
<meta name=\"description\" content=\"\" />
<meta name=\"keywords\" content=\"\" />
<meta name=\"author\" content=\"Fábián Attila\" />
<meta http-equiv=\"content-type\" content=\"text/html/php;charset=iso-8859-2\" />
<link rel=\"stylesheet\" type=\"text/css\" href=\"../stilus.css\" />
</head>
<body>
<font face=\"Verdana\" color=\"#FFFFFF\">
<div class=\"bejelentkezes_\"></div>
<div class=\"bejelentkezes\">
<center>
<form name=\"bejelentkezes\" method=\"post\" action=\"bejelentkezes_1.php\">
Felhasználónév:<br />
<input name=\"felhasznalonev\" type=\"text\" id=\"felhasznalonev\"><br />
Jelszó:<br />
<input name=\"jelszo\" type=\"password\" id=\"jelszo\"><br />
<input type=\"submit\" name=\"Submit\" value=\"Bejelentkezés\">
</form>
</center>
</div>
</font>
</body>
</html>
";
?>
<?php
session_start();
$adatbazis_host = 'localhost';
$adatbazis_nev ='v630i-w660i';
$adatbazis_felhasznalonev ='v630i-w660i';
$adatbazis_jelszo ='XYZ';
$kezdooldal = '../index.php';
mysql_connect ($adatbazis_host, $adatbazis_felhasznalonev, $adatbazis_jelszo);
mysql_select_db($adatbazis_nev);
$jelszo = md5($_POST['jelszo']);
$sql_0 = "SELECT * FROM Adminisztratorok WHERE felhasznalonev = '".mysql_real_escape_string($_POST['felhasznalonev'])."' AND jelszo = '".mysql_real_escape_string($jelszo)."'";
$sql_1 = mysql_query($sql_0) or die(mysql_error());
$sql_2 = mysql_num_rows($sql_1);
if ($sql_2 == 1)
{
$_SESSION['felhasznalonev'] = $_POST['felhasznalonev'];
header ('Location:'.$kezdooldal);
}
else{
header ('Location:bejelentkezes_0.php');
}
?>
<?php
session_start();
$adatbazis_host = 'localhost';
$adatbazis_nev ='v630i-w660i';
$adatbazis_felhasznalonev ='v630i-w660i';
$adatbazis_jelszo ='XYZ';
$kezdooldal = '../index.php';
if (isset($_SESSION['felhasznalonev']))
{
if (isset($_GET['kilep']))
{
unset($_SESSION['felhasznalonev']);
header('Location:bejelentkezes_0.php');
exit();
}
else
{
print "<a href='?kilep=1'>Kijelentkezés</a><br>";
$hozzaferes = TRUE;
}
}
else
{
print 'Hozzáférés megtagadva!';
include('bejelentkezes_0.php');
$hozzaferes = FALSE;
}
?>
<?php
include ('bejelentkezes_2.php');
if ($hozzaferes == TRUE)
{
print 'Be vagyok jelentkezve...';
}
else
{
print 'Nem vagyok bejelentkezve...';
}
?>
<html>
<head>
<title>Valami</title>
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="author" content="Fábián Attila" />
<meta http-equiv="content-type" content="text/html/php;charset=iso-8859-2" />
<link rel="stylesheet" type="text/css" href="../stilus.css" />
</head>
<body>
Valami...
</body>
</html>
Legalább...
A bejelentkezes_0.php
debug
$sql_0 = "SELECT FROM Adminisztratorok WHERE...
A "SELECT" után nem ártana legalább 1 oszlopnév, vagy * (minden oszlop). Valószinűleg ez miatt nem lesz egyetlen sor sem és ezért dob vissza...
Miután végrehajtod a query-t mindig ellenőrizd le nem volt-e hiba!
$sql_1 = mysql_query($sql_0) or die(mysql_error());
A végleges - működő - verzióból viszont majd távolítsd el ezt a kiegészítést (pl. kommentezd ki).
Megcsináltam, de....
Ezesetben nem talál egyező
Én felhasználónévnek szinte mindenhol (kivétel ahol az email címével jelentkezik be) csak alfanumerikus karaktereket engedek, kis és nagybetűre NEM érzékeny és van a felhasználóknak külön fullname mezőjük (vagy külön vezetéknév/keresztnév, ahogy tetszik). Ez azért jó mert egyrészt elkerülhetőek a charset gondok, másrészt nem biztos hogy mindenhol (pl. másik gépről jelentkezik be) elérhetőek azok a speciális karakterek amiket az illető használt. De lehet ezzel az elvvel nem mindenki ért egyet.
Megpróbálom, hátha tényleg
Átírtam a felhasználónevet
(Itt meg lehet tekinteni: http://diak.v630i-w660i.hu/bejelentkezes/bejelentkezes_0.php)
Felhasználónév: Fabian_Attila
Jelszó: Attiss)
Az index.php-ban azt a
Inkább csináld úgy hogy $_SESSION["logged"] értékét 1-re állítod amikor sikeres a bejelentkezés, és utána azt ellenőrizd.
$hozzaferes
A telepites.php 15. sorából
attiss94
Az itt lévő szerkesztőben a
tábla
jelszo VARCHAR(50)
után hiányzik egy vessző, és ezt tette szóvá bb0072.Igazatok van és köszönöm,
Lefuttatom a telepítést, sikeresen lefut, de a bejentkezes_0.php (az adatok beírása után) még mindig visszadob amikor elküldöm a FORM-ot.
Itt megtekinthetitek:
http://diak.v630i-w660i.hu/bejelentkezes/bejelentkezes_0.php
Helló próbáld meg így: $sql
$sql = "CREATE TABLE `adminisztratorok` (
`id` MEDIUMINT NOT NULL auto_increment,
`felhasznalonev` varchar(50),
`jelszo` varchar(40),
`email` varchar(50),
PRIMARY KEY (`id`)
) ;";