Wklepałem, założyłem bazę, rejestracja działa, logowanie też, ale.....
Sprawdźcie plik CHECK.PHP, bo u mnie :
1 . warunek if ustawiony na odwrót działa poprawnie, czyli gdy zalogowany=0 wtedy otwiera się następna podstrona, a gdy zalogowany=1 wtedy żąda zalogowania.
dla jasności powklejam pliki z kursu ale już w mojej wersji,
plik index.php
Kod
<?php
session_start();
session_register("zalogowany");
if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
mysql_connect("localhost", "root", "")or die("Nie można nawiązać połączenia z bazą");
mysql_select_db("user1")or die("Wystąpił błąd podczas wybierania bazy danych");
function ShowLogin($komunikat=""){
echo "$komunikat
";
echo "<form action='index.php' method=post>";
echo "Login: <input type=text name=login>
";
echo "Hasło: <input type=text name=haslo>
";
echo "<input type=submit value='Zaloguj!'>";
echo "</form>";
echo "Jeśli nie jesteś zarejestrowany, <a href='rej.php'>tu znajdziesz formularz</a>";
}
?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<title>Strona główna</title>
</head>
<body>
<?php
if($_GET["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;echo "Zostałeś wylogowany z serwisu";}
if($_SESSION["zalogowany"]!=1){
if(!empty($_POST["login"]) && !empty($_POST["haslo"])){
if(mysql_num_rows(mysql_query("select * from user2 where user_login = '".htmlspecialchars($_POST["login"])."' AND user_haslo = '".htmlspecialchars($_POST["haslo"])."'"))){
echo "Zalogowano poprawnie. <a href='index.php'>Przejdź na stronę główną</a>";
$_SESSION["zalogowany"]=1;
}
else echo ShowLogin("Podano złe dane!!!");
}
else ShowLogin();
}
else{
?>
Gratulacje! Zalogowałeś się pomyślnie! Możesz przejśc teraz do innych podstron, np. do <a href="stronaf.php">tej</a>
<a href='index.php?wyloguj=tak'>wyloguj się</a>
<?php
}
?>
</body>
</html>
<?php mysql_close(); ?>
session_start();
session_register("zalogowany");
if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
mysql_connect("localhost", "root", "")or die("Nie można nawiązać połączenia z bazą");
mysql_select_db("user1")or die("Wystąpił błąd podczas wybierania bazy danych");
function ShowLogin($komunikat=""){
echo "$komunikat
";
echo "<form action='index.php' method=post>";
echo "Login: <input type=text name=login>
";
echo "Hasło: <input type=text name=haslo>
";
echo "<input type=submit value='Zaloguj!'>";
echo "</form>";
echo "Jeśli nie jesteś zarejestrowany, <a href='rej.php'>tu znajdziesz formularz</a>";
}
?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<title>Strona główna</title>
</head>
<body>
<?php
if($_GET["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;echo "Zostałeś wylogowany z serwisu";}
if($_SESSION["zalogowany"]!=1){
if(!empty($_POST["login"]) && !empty($_POST["haslo"])){
if(mysql_num_rows(mysql_query("select * from user2 where user_login = '".htmlspecialchars($_POST["login"])."' AND user_haslo = '".htmlspecialchars($_POST["haslo"])."'"))){
echo "Zalogowano poprawnie. <a href='index.php'>Przejdź na stronę główną</a>";
$_SESSION["zalogowany"]=1;
}
else echo ShowLogin("Podano złe dane!!!");
}
else ShowLogin();
}
else{
?>
Gratulacje! Zalogowałeś się pomyślnie! Możesz przejśc teraz do innych podstron, np. do <a href="stronaf.php">tej</a>
<a href='index.php?wyloguj=tak'>wyloguj się</a>
<?php
}
?>
</body>
</html>
<?php mysql_close(); ?>
plik rejestracji rej.php
Kod
<?php
mysql_connect("localhost", "root", "")or die("Nie można nawiązać połączenia z bazą"); //połączenie z bazą danych
mysql_select_db("user1")or die("Wystąpił błąd podczas wybierania bazy danych");
function ShowForm($komunikat=""){ //funkcja wyświetlająca formularz rejestracyjny
echo "$komunikat
";
echo "<form action='rej.php' method=post>";
echo "Login: <input type=text name=login>
";
echo "Hasło: <input type=text name=haslo>
";
echo "<input type=hidden value='1' name=send>";
echo "<input type=submit value='Zarejestruj mnie'>";
echo "</form>";
}
?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<title>Formularz rejestracyjny</title>
</head>
<body>
<?php
if($_POST["send"]==1){ //sprawdzanie czy formularz został wysłany
if(!empty($_POST["login"]) && !empty($_POST["haslo"])){ //oraz czy uzupełniono wszystkie dane
if(mysql_num_rows(mysql_query("select * from user2 where user_login='".htmlspecialchars($_POST["login"]."'"))))ShowForm("Użytkownik o podanym loginie już istnieje!!!"); // sprawdzanie czy użytkownik o podanej nazwie już istnieje
else{
mysql_query("insert into user2 values(NULL, '".htmlspecialchars($_POST["login"])."', '".htmlspecialchars($_POST["haslo"])."')"); // zapisywanie rekordu do bazy
echo "Rejestracja przebiegła pomyślnie. Możesz teraz przejść do <a href='index.php'>strony głównej</a> i się zalogować.";
}
}
else ShowForm("Nie uzupełniono wszystkich pól!!!");
}
else ShowForm();
mysql_close(); //zamykanie połączenia z bazą
?>
</body>
</html>
mysql_connect("localhost", "root", "")or die("Nie można nawiązać połączenia z bazą"); //połączenie z bazą danych
mysql_select_db("user1")or die("Wystąpił błąd podczas wybierania bazy danych");
function ShowForm($komunikat=""){ //funkcja wyświetlająca formularz rejestracyjny
echo "$komunikat
";
echo "<form action='rej.php' method=post>";
echo "Login: <input type=text name=login>
";
echo "Hasło: <input type=text name=haslo>
";
echo "<input type=hidden value='1' name=send>";
echo "<input type=submit value='Zarejestruj mnie'>";
echo "</form>";
}
?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<title>Formularz rejestracyjny</title>
</head>
<body>
<?php
if($_POST["send"]==1){ //sprawdzanie czy formularz został wysłany
if(!empty($_POST["login"]) && !empty($_POST["haslo"])){ //oraz czy uzupełniono wszystkie dane
if(mysql_num_rows(mysql_query("select * from user2 where user_login='".htmlspecialchars($_POST["login"]."'"))))ShowForm("Użytkownik o podanym loginie już istnieje!!!"); // sprawdzanie czy użytkownik o podanej nazwie już istnieje
else{
mysql_query("insert into user2 values(NULL, '".htmlspecialchars($_POST["login"])."', '".htmlspecialchars($_POST["haslo"])."')"); // zapisywanie rekordu do bazy
echo "Rejestracja przebiegła pomyślnie. Możesz teraz przejść do <a href='index.php'>strony głównej</a> i się zalogować.";
}
}
else ShowForm("Nie uzupełniono wszystkich pól!!!");
}
else ShowForm();
mysql_close(); //zamykanie połączenia z bazą
?>
</body>
</html>
plik check.php
I TU jest różnica w porównaniu z kursem, bo w kursie na samej górze jest jeszcze :
<?php session_start(); ?> Ja musiałem to usunąć bo po każdym uruchimieniu tego pliku zgłaszał bląd :
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at G:\WebServ\httpd\log3\stronaf.php:6) in G:\WebServ\httpd\log3\check.php on line 2
Kod
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<title>podstrona</title>
</head>
<body>
<?php
if($_SESSION["zalogowany"]==0){echo "nie masz dostępu do tej części witryny. <a href='index.php'>Zaloguj się</a></body></html>;"; exit();}
?>
no i plik MOJA_PODSTRONA.PHP
Kod
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Dokument bez nazwy</title>
</head>
<?php require("check.php"); ?>
to treść strony do której mają dostęp tylko zalogowani użytkownicy, między innymi ty:P
<a href='index.php?wyloguj=tak'>wyloguj się</a>
</body>
</html>
<body>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Dokument bez nazwy</title>
</head>
<?php require("check.php"); ?>
to treść strony do której mają dostęp tylko zalogowani użytkownicy, między innymi ty:P
<a href='index.php?wyloguj=tak'>wyloguj się</a>
</body>
</html>
<body>
</body>
</html>
Wydaje mi się że usunięcie z pliku check.php lini
<?php session_start(); ?>
powoduje ten problem, tylko że gdy go nie usunę zgłasza ww błąd.
Jeszcze inna sytuacja. Po usunięciu z check.php <?php session_start(); ?> i zamianie warunku (czyli gdy zalogowany=)
wtedy jestem zalogowany, otwiera się moja podstrona, na niej klikam wyloguj się , pokazuje że wylogowuję się
ale w przeglądarce klikam strzałke w tył, czyli poprzednia strona, i ona cholera otwiera mi się znowu ://////
Właśnie tego staram się uniknąć. Że gdy się wyloguje powrót na stronę zastrzeżoną był już niemożliwy
H E L P