Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z sesjami i nadpisywanie rekordów w bazie
Forum PHP.pl > Forum > PHP
dzesi
Witam mam pewien problem z którym nie umiem sobie poradzić
1.Mam rejestracje na stronie i użytkownik który tylko wywoła skrypt poprzez http:///cos tam.pl/xxx/to jest to.php
automatycznie dodaje pusty rekord i tak jest za kazdym razem .Mam nadzieje ze znacie rozwiązanie jak to zabezpieczyć
2.Co robie zle ze sesje mi nie działają ?
o to kawałek kodu z którym na problem
  1. <?php
  2. $zapytanie="SELECT * FROM `user` WHERE `login`='".$this->login."' AND `haslo`='".$this->haslo."'";
  3.  $query=mysql_query($zapytanie)or die (QUERY_ERROR);
  4.  $num_rows=mysql_num_rows($query);
  5.  $ob=mysql_fetch_object($query);
  6.  if($this->haslo!=$ob->haslo){
  7. echo "Hasło jest błędne";
  8.  }
  9.  if ($num_rows >0)
  10.  {
  11.  $this->zalogowany();
  12.  }
  13.  
  14.  else {
  15.  echo "logowanie nie udało się ";
  16.  }
  17. ?>


  1. <?php
  2. function zalogowany()
  3.  {
  4.  //czy tutaj dać isset i sprawdzanie sesji ?
  5.  $_SESSION['login'] = 'true';
  6.  echo "Ok";
  7.  }
  8. ?>

Dodam ze session_start(); jest na samym początku
  1. <?php
  2. header("Content-type: text/html; charset=utf-8");
  3. // reszta skryptu
  4. ?>

Z góry dziękuje za pomoc wstydnis.gif

Dodam ze normalnie jak wywołam skrypt w którym ma byc sesja to bez logowania pokazuje mi sie to co powinno po zalogowaniu
Normalnie to bym zrobił to tak
  1. <?php
  2.  
  3.  
  4. if( $_POST['login'] == '2222' && $_POST['pass'] == '2222' )
  5. {
  6. $_SESSION['login'] = 'True'; //zapisujemy do zmiennej sesyjnej, że "login" = True. ;]
  7. echo "Ok";
  8. echo '<a href="index.php">Przejdź do index.php</a>';
  9. } 
  10.  
  11. ?>

  1. <?php
  2.  
  3.  
  4. if( $_SESSION['login'] == 'True' ) //sprawdzamy czy jesteś zalogowany
  5. {
  6. echo 'Ok - zalogowany';
  7. }
  8. else
  9. {
  10. echo 'Niezalogowany ';
  11. }
  12.  
  13. ?>

Ale przy tym skrypcie co pisze teraz to jakoś nie mogę tego wykombinować
marcio
najprostszy skrypt logowania jaki moze byc
zxc.php
  1. <?php
  2. echo('<html><body><form method="post"/><table><tr><td><input type="text" name="nick" /></td></tr><tr><td><input type="password" name="haslo" /></td></tr><tr><td><input type="submit" value="login"></table></form></body></html>');
  3. $nick = $_POST['nick'];
  4. $haslo = $_POST['haslo'];
  5. if(!empty($nick) && !empty($haslo))
  6. {
  7.  
  8.  if($nick == 'login' && $haslo == 'haslo')
  9.  {
  10. $_SESSION['login'] = $nick;
  11. $_SESSION['pass'] = md5($haslo);
  12.  header("Location:admin.php");
  13.  }
  14.  
  15.  else echo('<script>alert("Proba wlamania");</script>');
  16. }
  17.  
  18. ?>

admin.php
  1. <?php
  2.  if($_SESSION['login'] && $_SESSION['pass'] == 'hash hasla md5 ktore podales w zxc.php' ) {
  3. echo("Zalogowany jako " .$_SESSION['login']. " Witaj adminie");
  4.  }
  5. else {
  6. echo('Nie jestes adminem');
  7. }
  8. ?>


a z baza to to samo tylko ja porownujesz login o haslo to porownujesz rzcezy z bazy

a na bazie bym zrobil mniej wiecej tak

  1. <?php
  2. echo('<html><body><form method="post"/><table><tr><td><input type="text" name="nick" /></td></tr><tr><td><input type="password" name="haslo" /></td></tr><tr><td><input type="submit" value="login"></table></form></body></html>');
  3. $nick = $_POST['nick'];
  4. $haslo = $_POST['haslo'];
  5. if($db = $this->pasy['host'], $this->pasy['login'], $this->pasy['haslo'])) {
  6.  
  7. mysql_select_db($this->pasy['baza']);
  8.  $zap = "select login,pass from users where 'login'=".$nick." and 'pass'=".$haslo;
  9.  $wynik = mysql_query($zap, $db);
  10.  
  11. while($tab = mysql_fetch_assoc($wynik)) {
  12. $login = $tab['login'];
  13. $pass = $tab['pass'];
  14.  
  15.  
  16.  
  17. if(!empty($nick) && !empty($haslo))
  18. {
  19.  
  20.  if($nick == $login && $haslo == $pass)
  21.  {
  22. $_SESSION['login'] = $nick;
  23. $_SESSION['pass'] = md5($haslo);
  24.  header("Location:admin.php");
  25. }
  26. }
  27.  
  28.  else echo('<script>alert("Proba wlamania");</script>');
  29. }
  30.  
  31. ?>

ale nie wiem czy dziala bo nie sprawdzalem
phoenix7
Witam

Hmm to znaczy, że w pliku z skryptem rejestracji masz zrobione tak że bez względu na to czy jest wysłany login i hasło czy też nie wykonuje się operacja na bazie danych.

Wrzuć warunek

  1. <?php
  2. if (isset($_POST['login'] && isset($_POST['pass']) {
  3. // tutaj skrypt zapisu do bazy danych albo odwołanie do klasy
  4. } else {
  5. // tutaj formularz rejestracyjny
  6. }
  7. ?>


problemu mieć nie powinieneś

Pozdrawiam
PhoeniX
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.