Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Session bug
Forum PHP.pl > Forum > PHP
Muadib
Hmm w moim skrypcie dostaje ciekawy bład z którym sie jescze nie spotkałem mianowicie:

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.

już godzine gmeram w kodzie i nic znaleśc nie mogę, domuślam sie że problem tkwi gdzies w tych częsciach kodu:
  1. <?php
  2. while($row = pg_fetch_array($result, NULL, PGSQL_ASSOC))
  3. {
  4.  $username = $row['username'];
  5.  $username_rpl = preg_replace('/@ron.int/', '', $row['username']);
  6.  
  7.  if (preg_match('/username/', $_SERVER['REQUEST_URI']) && preg_match('/form=true/', $_SERVER['REQUEST_URI']))
  8.  {
  9.  $_SESSION['name'] = $row['name'];
  10.  $_SESSION['surname'] = $row['surname'];
  11.  $_SESSION['pass1'] = $row['password'];
  12.  $_SESSION['pass2'] = $row['password'];
  13.  $_SESSION['phone'] = $row['phone'];
  14.  $_SESSION['domena'] = $row['goto'];
  15.  $_SESSION['alias'] = $row['username'];  
  16.  }
  17.  
  18.  print '<tr>';
  19.  foreach ($row as $widok) { echo "<td>".$widok."</td>"; }
  20.  if (preg_match('/rem/', $_SERVER['REQUEST_URI']) && preg_match('/mailbox/', $query) && $_SESSION['check'] == true )
  21.  {
  22.  echo '<td>'."<input type='checkbox' name='delete[]' value='".$username."'>".'</td>';
  23.  }  
  24.  if (preg_match('/edit/', $_SERVER['REQUEST_URI']) && preg_match('/mailbox/', $query) && !preg_match('/username/', $_SERVER['REQUEST_URI']))
  25.  {
  26.  echo "<td id = 'edit'>"."<a href='".$_SERVER['PHP_SELF']."?opcja=edit&form=true&username=".$username_rpl."'>Edit</a>".'</td>';
  27.  }
  28.  print '</tr>';
  29. }
  30. ?>


lub tudziesz
  1. <?php
  2. $user = $_REQUEST['username'];
  3.  
  4. print'<p>'; $pgs->query_select("SELECT * FROM alias WHERE goto LIKE '%".$user."%'"); print'</p>';
  5. $alias = array($_SESSION['domena']);
  6.  
  7. print'<p>'; $pgs->query_select("SELECT * FROM mailbox WHERE username LIKE '".$user."%'"); print'</p>';
  8. $mailbox = array($_SESSION['name'], $_SESSION['surname'], $_SESSION['pass1'], $_SESSION['pass2'],$_SESSION['phone'], $_SESSION['alias']); 
  9.  
  10. self_form($mailbox[0], $mailbox[1], $mailbox[2], $mailbox[3], $mailbox[4], $alias[0], $mailbox[5]);
  11. ?>


czy też może wywoływanej funkcji

  1. <?php
  2. function self_form($imie, $nazwisko, $haslo, $haslo2, $phone, $adres, $alias)
  3. {
  4. $url = $_SERVER['REQUEST_URI'];
  5.  
  6. if(preg_match('/edit/', $url))
  7. {
  8.  print "<form action= '".$PHP_SELF."' method= 'POST'>"."<div class ='form'>"
  9.  ."<div id = 'opcje'><p><input type='text' name='imie' value='".$imie."' />Imię</p>"
  10.  ."<p><input type='text' name='nazwisko' value='".$nazwisko."' />Nazwisko</p>"
  11.  ."<p><input type='text' name='haslo' value='".$haslo."' />Hasło</p>"
  12.  ."<p><input type='text' name='haslo2' value='".$haslo2."' />Powtórz hasło</p>"
  13.  ."<p><input type='text' name='phone' value='".$phone."' />Numer telefonu</p>"
  14.  ."<p><textarea name='address'>".$adres."</textarea>Domena (Adres)</p>"
  15.  ."<p><input type='text' name='alias' value='".$alias."' />Alias (Glowny)</p>"
  16.  ."<p align = 'center'>"."<input type='submit' value='Zatwierdz' name='submit' />"."</p>".'</div>'
  17.  ."</form>";
  18.  }
  19.  else
  20.  {
  21.  print "<form action= '".$PHP_SELF."' method= 'POST'>"."<div class ='form'>"
  22.  ."<div id = 'opcje'><p><input type='text' name='imie' value='' />Imię</p>"
  23.  ."<p><input type='text' name='nazwisko' value='' />Nazwisko</p>"
  24.  ."<p><input type='text' name='haslo' value='' />Hasło</p>"
  25.  ."<p><input type='text' name='haslo2' value='' />Powtórz hasło</p>"
  26.  ."<p><input type='text' name='phone' value='' />Numer telefonu</p>"
  27.  ."<p><textarea name='address'></textarea>Domena (Adres)</p>"
  28.  ."<p><input type='text' name='alias' value='' />Alias (Glowny)</p>"
  29.  ."<p align = 'center'>"."<input type='submit' value='Zatwierdz' name='submit' />"."</p>".'</div>'
  30.  ."</form>";
  31.  }
  32. ?>


no i jescze funkcja validacyjna formularza
  1. <?php
  2. function valid_all($post_form)
  3. {
  4. foreach($post_form as $index => $valid)
  5. {
  6.  if((!isset($index)) || ($valid == ''))
  7.  {
  8.  return false;
  9.  }
  10. }
  11. return true;
  12. }
  13.  
  14. function valid_form()
  15. {
  16. try
  17. {
  18. if(!valid_all($_POST['var']))
  19. {
  20. throw new Exception('Nieporawnie wypełniony formularz.<br />');
  21. }
  22. if(!valid_mail($_POST['alias']))
  23. {
  24. throw new Exception('Nieporawnie e-mail.<br />');
  25. }
  26. if(!valid_pass($_POST['haslo'], $_POST['haslo2']))
  27. {
  28. throw new Exception('Hasła nie sa identyczne lub hasło jest za krótkie.<br />Hasło powinno zawierać minimum 6 znaków.<br />');
  29. }
  30. }
  31. catch (Exception $e)
  32. {
  33. echo $e ->getMessage();
  34. die('Ten skrypt umarł');
  35. }
  36. }
  37. ?>


Byłbym wdzwięczny za info worriedsmiley.gif
misiek172
Moim zdaniem błąd mówi o tym że używasz zmiennych globalnych do obsługi sesji,

tam jest napisane abyś wyłączył Register Globals czyli zmienne globalne
Muadib
Gdybym te zmienne jeszcze widział widział tylko ;D
misiek172
no dobra ale to nie możesz wyłączyć zmiennych globalnych?
Muadib
NIe mam dostepu do php.ini
misiek172
no i co, użyj polecenia :

ini_set()

lub użyj .htaccess

php_flag register_globals off
Muadib
Dobra doszedłem do sedna problemu winksmiley.jpg nie trzeba było grzebać w zmiennych php, dla potomnych to problem tkwił w nazwaniu zmiennych sesji tak samo jak ich lokalne odpowiedniki dla przykładu

  1. <?php
  2. $_SESSION['name'] = $row['name'];
  3. ?>


To mi rejestrowało zmienne do zmiennych sesji jako zmienne globalne, wystarczyło zmienic nazwe zmiennych sesji na

  1. <?php
  2. $_SESSION['session_name'] = $row['name'];
  3. ?>
i jest cacy smile.gif

dziękować za wszystkie poprzednie rady ^^
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.