Nu ma logheaza in script logare

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
cadou
Mesaje:328

Nu ma logheaza in script logare

Am creat fisierul logare si am urmatorul cod :

Cod: Selectaţi tot

<?php

$server = "";
$database = "";
$username = "";
$pass = "";

// conectarea la serverul MySQL
$connect = mysql_connect($server,$username,$pass) or die( mysql_error() );

// selecteaza baza de date test
$db = mysql_select_db($database,$connect) or die( mysql_error() );


// verifica daca exista date transmise
if (isset($_SESSION['nume']) && isset($_SESSION['parola'])) {

// preia datele din formular
$nume = $_POST['login_nume'];
$parola = md5($_POST['login_parola']);

// formeaza si executa query-ul de select din baza de date
$query = "SELECT * FROM `membri` WHERE `nume` = '".$nume."' AND `parola` = '".$parola."'";
$result = mysql_query($query) or die ( "Error : ". mysql_error() );

// verifica daca interogarea MySQL a gasit date valide
if ($result || mysql_num_rows($result) < 1) {
// daca nu, afiseaza un mesaj de eroare
echo "Datele introduse sunt incorecte<br>
Incearca din nou";
} else {

// salveaza username-ul si parola in sesiune
$_SESSION['nume'] = $nume;
$_SESSION['parola'] = $parola;

// afiseaza un mesaj de succes
echo "Autentificarea a fost efectuata cu succes.";
}
}
?>
<form action="logare.php" method="post" enctype="multipart/form-data">
Utilizator:
<br>
<input type="text" name="logare_nume" id="logare_nume" />
<br>
Parola:
<br>
<input type="password" name="logare_parola" id="logare_parola" />
<br><input type="submit" name="logare_btn" value="Intra" /></form>

Nu imi da nicio eroare dar cand dau sa ma loghez nu ma logheaza , care e problema ? Cu ce am gresit ?

MarPlo Mesaje:4343
Cand se lucreaza cu $_SESSION, trebuie sa fie adaugat session_start(); la inceputul acelui script.
vezi lectia Utilizare sesiuni PHP , sunt explicate si alte lucruri despre sesiune.

Iar in loc de;

Cod: Selectaţi tot

if (isset($_SESSION['nume']) && isset($_SESSION['parola']))
Cred ca trebuie asa, daca sunt "nume si "parola" preluate din formular:

Cod: Selectaţi tot

if (isset($_POST['nume']) && isset($_POST['parola']))

cadou Mesaje:328
cand dau sa ma loghez , introduc datele si dau intra(log in ) si imi da eroarea Datele introduse sunt incorecte
Incearca din nou

MarPlo Mesaje:4343
Poate ca gresala e la aceastra linie:

Cod: Selectaţi tot

if ($result || mysql_num_rows($result) < 1)
Tu afisezi mesajul daca $result este valid, ar trebui sa verifici daca e false (cu " ! " in fata), sa afiseze eroarea.
Cam asa:

Cod: Selectaţi tot

if (!$result || mysql_num_rows($result) < 1)
 

archemorus Mesaje:29
Daca tot iti place sa iei o parti de cod din diferite scripturi si sa le imbini , macar adapteaza codul, astfel incat sa corespunda toate lucrurile si sa aiba o oarecare logica.
Pe langa ce ti-a spus MarPlo (lucruri care sunt esentiale) trebuie sa mai schimbi in formular "logare_nume" respectiv "logare_parola" cu "login_nume" respectiv "login_parola" sau invers,poti face schimbarea atunci cand preiei variabilele din formular.
Trebuie inlocuit si ce ti-a zis MarPlo cu :

Cod: Selectaţi tot

if (isset($_POST['logare_nume']) && isset($_POST['logare_parola']))
sau

Cod: Selectaţi tot

if (isset($_POST['login_nume']) && isset($_POST['login_parola']))
,
Depinde ce ai ales.

O varianta a scriptului tau e asta:

Cod: Selectaţi tot

<?php
session_start();
$server = "";
$database = "";
$username = "";
$pass = "";

// conectarea la serverul MySQL
$connect = mysql_connect($server,$username,$pass) or die( mysql_error() );

// selecteaza baza de date test
$db = mysql_select_db($database,$connect) or die( mysql_error() );


// verifica daca exista date transmise
if (isset($_POST['login_nume']) && isset($_POST['login_parola'])){

// preia datele din formular
$nume = $_POST['login_nume'];
$parola = md5($_POST['login_parola']);

// formeaza si executa query-ul de select din baza de date
$query = "SELECT * FROM `membri` WHERE `nume` = '".$nume."' AND `parola` = '".$parola."'";
$result = mysql_query($query) or die ( "Error : ". mysql_error() );

// verifica daca interogarea MySQL a gasit date valide
if (!$result || mysql_num_rows($result) < 1) {
// daca nu, afiseaza un mesaj de eroare
echo "Datele introduse sunt incorecte<br>
Incearca din nou";
} else {

// salveaza username-ul si parola in sesiune
$_SESSION['nume'] = $nume;
$_SESSION['parola'] = $parola;

// afiseaza un mesaj de succes
echo "Autentificarea a fost efectuata cu succes.";
}
}
?>
<html>
<body>
<form action="logare.php" method="post" enctype="multipart/form-data">
Utilizator:
<br>
<input type="text" name="login_nume" id="login_nume" />
<br>
Parola:
<br>
<input type="password" name="login_parola" id="login_parola" />
<br><input type="submit" name="logare_btn" value="Intra" /></form>
</body>
</html>
Acum este imposibil sa nu iti mearga, pentru ca am testat personal scriptul (si daca totusi ceva nu merge, verifica baza de date).

Have a nice day!

cadou Mesaje:328
Ok zice ca sunt autentificat dar de ce nu merge codu urmator ?

Cod: Selectaţi tot

<?php
if(isset($_SESSION['username'])) {
  echo 'Executa un cod daca utilizatorul este autentificat';
}
else {
  echo 'executa un cod daca e dezauntentificat';
}
?>

archemorus Mesaje:29
Primul motiv ar fi ca in codul de mai sus nu ai

Cod: Selectaţi tot

$_SESSION['username'])
, de fapt ai

Cod: Selectaţi tot

$_SESSION['nume'])
si un al doilea motiv ar fi ca nu ai pus

Cod: Selectaţi tot

session_start();
La inceputul scriptului (asta daca e un fisier diferit de cel cu autentificarea,d aca face parte din scriptul cu autentificarea nu e nevoie). Iti recomand totusi sa mai recitesti cateva tutoriale php despre sesiuni, si nu numai.
Have a nice day!
Desenele Copilariei http://www.desenele-copilariei.ro
Bancuri Haioase http://www.haiosul.ro