Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Warning()! (sesja)
Forum PHP.pl > Forum > PHP
snaiper
no wiec tak, zrobilem sobie (przy pomocy ksiazki :/) formularz logowania no i dziala on poprawnie tylko ze jak podam poprawne dane to opocz informacji ze sie dobrze zalogowalem wyswietla mi komunikat:

Warning: Unknown(): Your script possibly relies on a session side-effect which existed until php 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

no i nie wiem o co w nim chodzi sad.gif
tiraeth
wersja php questionmark.gif

i podaj kod skryptu....
Vertical
To znaczy, że musisz włączyć register_globals
snaiper
mam php 4.3.9

autoryzacja.html
---------------------

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<title>Logowanie</title>
</head>
<body>
<form method="POST" action="autoryzacja2.php">
<div align="center"><center>
<h2>Aby uzyskać dostęp do żadanych stron, proszę się zalogować</h2>
<table boder="1" width="200" cellpadding="2">
<tr>
<th width="18%" align="right">Login</th>
<td width="82%">
<input type="text" name="nick" size="8">
</td>
</tr>
<tr>
<th width="18%" align="right"> Hasło</th>
<td width="82%">
<input type="password" name="haslo" size="8">
</td>
</tr>
<tr>
<td width="100%" colspan="2" align="center">
<input type="submit" value="zaloguj" name"submit">
</td>
</tr>
</table></div>
</form>
</body>
</html>

-------------------
autoryzacja2.php
------------------

<?php
include "./autoryzacja3.php";
session_start();
if(!isset($nick)) {
$autoryzacja;
exit;
}
else {
session_register("nick", "haslo");
$nick = autoryzacja($nick, $haslo);
if(!$nick) {
session_unregister("nick");
session_unregister("haslo");
echo "Autoryzacja użytkownika nieudana. " . " Musisz podać poprawny login i hasło" . "<br>";
echo "<a href=\"$autoryzacja\">Logowanie</a>" . "<br>";
echo "Jeśli jeszce nie masz konta, zarejestruj się!" . "<br>";
echo "<a href= \"$rejestrowanie\">Rejestracja</a>";
exit;
}
else echo "Witaj, $nick!";
}
?>

---------------------
autoryzacja3.php
---------------------

<?php
include "./common_db.inc";
$rejestrowanie = "./formularz.html";
$autoryzacja = "./autoryzacja.html";

$nick = $_POST['nick'];
$haslo = $_POST['haslo'];

function autoryzacja($nick, $haslo) {
global $default_dbname, $user_tablename;
$link_id = db_connect();
$zapytanie = "SELECT nick FROM user WHERE nick = '$nick' AND haslo = password('$haslo')";
$wynik = mysql_query($zapytanie);
if(!mysql_num_rows($wynik)) return 0;
else {
$query_data = mysql_fetch_array($wynik);
return $query_data["nick"];
}
}
?>

i jescze jedno pytanie, co mam przekleic(napisac) zeby inne strony tez sprawdzaly poprawnosc autoryzacji questionmark.gif
ARJ
używaj BBCODE. kod który wkleiłeś jest mało czytelny. zedytuj posta i kod php wstaw w odpowiednie znaczniki bbcode.
crash
autoryzacja2.php ma być:
  1. <?php
  2. include &#092;"./autoryzacja3.php\";
  3. ?>

Używaj BBCode!
dee
jesli chcialbym przerobic ten skrypt na to zeby dzialal u mnie to co musze jeszcze zmienic?ponizej zamieszczam kod bazy i kod tego co zmienilem(i nie dziala)

  1. CREATE TABLE `administrator` (
  2. `nr` int(5) NOT NULL AUTO_INCREMENT,
  3. `nazwa` varchar(16) NOT NULL DEFAULT '',
  4. `haslo` varchar(16) NOT NULL DEFAULT '',
  5. PRIMARY KEY (`nr`)
  6. ) TYPE=MyISAM AUTO_INCREMENT=2 ;
  7.  
  8. --
  9. -- Zrzut danych tabeli `administrator`
  10. --
  11.  
  12. INSERT
  13. INTO `administrator` VALUES (1, 'admin', 'pass');

i to co zmienilemw kodzie php w autoryzacja3.php
  1. <?php
  2.  
  3. $rejestrowanie = &#092;"./formularz.html\";
  4. $autoryzacja = &#092;"./autoryzacja.html\";
  5.  
  6. $nazwa = $_POST['nazwa'];
  7. $haslo = $_POST['haslo'];
  8.  
  9. function autoryzacja($nazwa, $haslo) 
  10. {
  11. @ $polaczenie = mysql_pconnect('localhost','root','');
  12. if (!@polaczenie)
  13. {
  14. echo 'Nieudało sie polączenie z baza!';
  15. }
  16.  
  17. mysql_select_db('testy');
  18. $zapytanie = &#092;"SELECT nazwa FROM administrator WHERE nazwa = '$nazwa' AND haslo = password('$haslo')\";
  19. $wynik = mysql_query($zapytanie);
  20. if(!mysql_num_rows($wynik)) return 0;
  21. else {
  22. $query_data = mysql_fetch_array($wynik);
  23. return $query_data[&#092;"nazwa\"];
  24. }
  25. }
  26. ?>


co jest nietak?
crash
To ja się mogę spytać co jest nie tak tongue.gif Jaki błąd się pojawia?
dee
W tym problem ze nie ma zadnego bledu biggrin.gif poprostu sie nieloguje, wyswietla ze nie ma takiego uzytkownika
crash
Bo podajesz złe hasło. W bazie masz hasło pass, a Ty podajesz w zapytaniu hasło zakodowane funkcją PASSWORD().
dee
Faktycznie teraz dzial smile.gif wiec mam kolejne pytanie co mam wkleic do innych plikow by sprawdzaly ze zainplementowano sesje?
crash
Po poprawnym zalogowaniu ustaw jakąś zmienną sesyjną, np zawierającą login użytkownika. Na każdej stronie sprawdzaj czy taka zmienna jest ustawiona.
dee
a moglbys mi napisac dla tego przykladu jak to zrobic?zeby w innych plikach sprawdzal czy ktos sie logowal bede bardzo wdzieczny.
crash
Na początku pliku z logowaniem wywołaj:
  1. <?php
  2. ?>

po poprawnym zalogowaniu ustaw:
  1. <?php
  2. $_SESSION['login'] = $_POST['nazwa'];
  3. ?>


W każdym pliku, który ma sprawdzić czy użytkownik jest zalogowany sprawdzaj:
  1. <?php
  2.  
  3. if(empty($_SESSION['login']))
  4. {
  5.  echo 'Musisz się zalogować!'; // albo die();
  6. }
  7. else
  8. {
  9.  // blok wykonywany dla zalogowanego użytkownika.
  10. }
  11. ?>
dee
dzeki dziala smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.