Jestem początkującym programistą PHP. Chciałem napisać skrypt logowania na swojej stronie z użyciem sesji na podstawie książki, z której się uczę. Poniżej przedstawiam kod tego skryptu:
To jest
add_admin.php, który dodaje administratorów do bazy danych:
<?
//połączenie z bazą danych
require_once('../mysql_connect.php');
//funkcja wstawiaąca przed znakami specjalnymi znak odwrotnego ukośnika.
function escape_data ($data){
//Potrzebne połączenie
}
}
//tablica typu array na błędy
if($_POST['wyslij']){
//sprawdzanie, czy wszystkie pola są wypełnione
//nazwa admina
if(empty($_POST['name'])){ $errors[] = "Nie podano nazwy admina.";
}
else{
$name = escape_data($_POST['name']);
}
//email
if(empty($_POST['email'])){ $errors[] = "Nie podano adresu e-mail admina.";
}
else{
$email = escape_data($_POST['email']);
}
//haslo
if(empty($_POST['password'])){ $errors[] = "Nie podano hasła admina.";
}
else{
$password = escape_data($_POST['password']);
}
//jeśli nie ma błędów
//zapytanie
$query = "INSERT INTO admins (name, email, password, date) VALUES ('$name', '$email', SHA('$password'), NOW())";
//jeśli zapytanie zostało przyjęte
if($result){
print "Dodano nowy rekord do bazy danych."; }
else{
print "Nie można dodać nowego rekordu do bazy danych z powodu prawdopodobnych błęd
ów w serwisie."; }
}
//a jeśli błędy są
else{
print 'Wystąpiły następujące błędy w formularzu: <br/><br/>';
foreach($errors AS $raport){
print " - $raport <br/>"; }
}
}
?>
A to jest plik
logowanie.php:
<?
//jeśli formularz został wysłany
if($_POST['wyslij']){
//połączenie z bazą danych
require_once('../mysql_connect.php');
//////////////////////FUNCTION ESCAPE DATA//////////////////////////////
//funkcja wstawiaąca przed znakami specjalnymi znak odwrotnego ukośnika.
function escape_data ($data){
//Potrzebne połączenie
}
}
////////////////////KONIEC FUNKCJI ESCAPE DATA//////////////////////////
//tablica typu array przechowująca błędy
//sprawdzanie pól formularza
//email
if(empty($_POST['email'])){ $errors [] = "Nie podano adresu mailowego.";
}
else{
$email = escape_data($_POST['email']);
}
//haslo
if(empty($_POST['password'])){ $errors [] = "Nie podano hasła.";
}
else{
$password = escape_data($_POST['password;']);
}
//jeśli nie ma błędów
//pobranie identyfikatora administratora i nazwy do kombinacji loginu i hasła
//zapytanie
$query = "SELECT admin_id, name FROM admins WHERE email='$email' AND password=SHA('$password')";
//jeśli zapytanie zwróciło jakiś rekord
if($row){
/////////////////////////////USTAWIENIE SESJI///////////////////////////
//ustawienie danych sesji
$_SESSION['admin_id'] = $row[0];
$_SESSION['name'] = $row[1];
///////////////////////KONIEC USTAWIANIA SESJI//////////////////////////
//przekierowanie do strony loggedin.php
//definicja adresu URL
///////////////////////////DEFINICJA ADRESU URL ////////////////////////
$url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']);
//sprawdzenie końcowego ukośnika
if((substr($url, -1) == '/') OR
(substr($url, -1) == '//')){
//definicja adresu URL - ciąg dalszy
//odcinamy ukośnik
}
//definicja adresu URL - ciąg dalszy
//dodanie strony
$url .= './loggedin.php';
////////////////////KONIEC DEFINICJI ADRESU URL ////////////////////////
//przekierowanie do wcześniej zdefiniowanego adresu url
exit(); //koniec działania skryptu
} //koniec klauzuli wyyrażenia warunkowego if($row)
//a jeśli zapytanie nie zwróciło żadnego rekordu
else{
print "Wprowadzony login i hasło są niepoprawne."; }
} //zamknięcie klałzuli wyrażenia warunkowego if(empty($errors))
//koniec połączenia z bazą danych
} //zamknięcie klałzuli wyrażenia warunkowego if($_POST['wyslij'])
?>
Problem jest następujący. Gdy dodaję admina i wpisuję jego odpowiednie dane, do panelu logowania wyświetla mi się za każdym razem:
Cytat
Wprowadzone dane są niepoprawne!
Tabela bazy danych
admins została utworzona w serwisie cba.pl przez PHPMyAdmina.
Ten post edytował Cysiaczek 5.09.2007, 19:02:39
Powód edycji: dodałem tag (cysiaczek)