Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: przenoszenie zmiennej do class
Forum PHP.pl > Forum > Gotowe rozwiązania
pyrek
Witam mam takie pytanko związane z class i przenoszeniem zmiennej:

mam plik index.php
w nim includije plik
config.php i
session.php

w config.php i - w niem zdefiniowane zmienne np: $baza_admin_sess='admin_sess';

w tym pliku session.php mam takie coś

  1. <?php
  2. class session 
  3. { 
  4.  var $ses_table = &#092;"$baza_admin_sess\"; 
  5.  var $db_con = &#092;"Y\"; 
  6.  var $db_host = &#092;"$url_db\"; 
  7. var $db_user = &#092;"$username_db\"; 
  8. var $db_pass = &#092;"$password_db\"; 
  9. var $db_dbase = &#092;"$database_db\"; 
  10. ?>
$url_db , $baza_admin_sess, $username_db, $password_db , $database_db - są zdefiniowane w configu ale mi ich nie widzi jak to zrobić żeby je widziałquestionmark.gif
nospor
musisz użyć global na tych zmiennych
pyrek
wstawiam
GLOBAL $url_db, $username_db, $password_db, $database_db, $baza_admin_sess;

ale wywala mi błąd!


Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}
GLOBAL wstawiam w :


class session
{
GLOBAL $url_db, $username_db, $password_db, $database_db, $baza_admin_sess;
może nie w tym miejscu questionmark.gif
sorki za problemy ale w php dopiero raczkuje!
nospor
no chyba nie w tym miejscu. Daj na początku skryptu. Dodatkowo tez musisz dać global w miejscu gdzie pierwszy raz inicjujesz te zmienne, czyli chyba na początku config.php o ile tam je inicjujesz
dr_bonzo
Ale poco takie rozwiazanie -- przaekaz te wartosci np. w konstruktorze klasy. Uniezaaleznisz sie od nazw zmiennych w glownym skrypcie.
sobstel
Cytat(nospor @ 2005-05-12 11:53:02)
no chyba nie w tym miejscu. Daj na początku skryptu.

raczej nie na poczatku skryptu, a na poczatku konstruktura lub/i metod(y).
pyrek
nie mam pojęcia gdzie to umieścić:
początek pliku session
  1. <?php
  2. $ses_class = new session(); 
  3.  
  4. session_set_save_handler (array(&$ses_class, '_open'), 
  5. array(&$ses_class, '_close'), 
  6. array(&$ses_class, '_read'), 
  7. array(&$ses_class, '_write'), 
  8. array(&$ses_class, '_destroy'), 
  9. array(&$ses_class, '_gc')); 
  10.  
  11.  
  12. class session
  13. {
  14. var $ses_table = &#092;"$baza_admin_sess\"; 
  15. var $db_con = &#092;"Y\"; 
  16. var $db_host = &#092;"$url_db\";
  17. var $db_user = &#092;"$username_db\"; 
  18. var $db_pass = &#092;"$password_db\"; 
  19. var $db_dbase = &#092;"$database_db\"; 
  20.  
  21.  
  22. ?>


  1. index.php
  2. <? ob_start(); ?>
  3. <?php
  4.  
  5. include&#092;"includes/config.php\";
  6. include &#092;"includes/session.php\";
  7.  
  8.  
  9.  
  10. $pass2 = md5(stripslashes($_POST['haslo']));
  11.  $query2 = &#092;"SELECT * FROM $baza_admin WHERE login='$login' AND haslo='$pass2'\";
  12.  $wynik2 = mysql_query($query2);
  13.  while($row = mysql_fetch_array($wynik2)) {
  14. // wymagane jeśli chcesz żeby wszystko działało poprawnie i zapisywalo wartości zm
  15. ennych sesyjnych
  16.  $pass=$row['pass'];
  17.  $ban=$row['login'];
  18. }
  19. //
  20. function auth_user($login, $pass) {
  21. $pass = md5(stripslashes($_POST['haslo']));
  22.  $query = &#092;"SELECT * FROM $baza_admin WHERE login='$login' AND haslo='$pass'\";
  23.  $wynik = mysql_query($query);
  24.  
  25. if (!mysql_num_rows($wynik)) return 0;
  26. else {
  27. $query_data = mysql_fetch_row($wynik);
  28. return $query_data[0];
  29. }
  30.  }
  31.  
  32. function login_form() {
  33.  
  34. ?>
  35. <CENTER>
  36. <FORM ACTION=\"index2.php\" METHOD=\"post\">
  37. <table>
  38. <tr>
  39. <td align=\"center\">
  40. <table width=\"250\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
  41. <tr>
  42. <td width=\"125\">Użytkownik:</td>
  43. <td width=\"125\"><INPUT TYPE=\"text\" NAME=\"login\" SIZE=\"10\"></td>
  44. </tr>
  45. <tr>
  46. <td>Hasło:</td>
  47. <td><INPUT TYPE=\"password\" NAME=\"haslo\" SIZE=\"10\" class=\"pole\"></td>
  48. </tr>
  49. <tr>
  50. <td colspan=\"2\" align=\"center\"><br><INPUT TYPE=\"image\" src=\"img/enter.gif\" NAME=\"username\" VALUE=\"submit\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  51. <INPUT TYPE=\"image\" src=\"img/cancel.gif\" VALUE=\"reset\"></td>
  52. </tr>
  53. </table>
  54. </td>
  55. </tr>
  56. </table>
  57. </FORM>
  58. </CENTER>
  59. <?php
  60. }
  61.  
  62. if(!isset($_POST['login']) AND !isset($_POST['pass'])) {
  63. login_form();
  64. }
  65. else {
  66. session_register(&#092;"login\", \"pass\");
  67. $username = auth_user($login, $pass);
  68. if(!$username) {
  69. session_unregister(&#092;"login\");
  70. session_unregister(&#092;"pass\");
  71.  
  72.  
  73. echo &#092;"<CENTER>AUTORYZACJA NIEUDANA</CENTER>\";
  74. } else
  75.  echo &#092;"<CENTER>$login WITAJ, W PANELU ADMINISTRACYJNYM<br>NACIŚNIJ F5</CENTER>\";
  76.  
  77. }
  78.  
  79. ?>
  80. <? ob_end_flush(); ?>
nospor
zmiennym w seesion przypisuj wartosc w konstruktorze:
  1. <?php
  2.  
  3. $ses_class = new session(); 
  4.  
  5. session_set_save_handler (array(&$ses_class, '_open'), 
  6. array(&$ses_class, '_close'), 
  7. array(&$ses_class, '_read'), 
  8. array(&$ses_class, '_write'), 
  9. array(&$ses_class, '_destroy'), 
  10. array(&$ses_class, '_gc')); 
  11.  
  12.  
  13. class session
  14. {
  15. var $ses_table; 
  16. var $db_con=&#092;"Y\"; 
  17. var $db_host;
  18. var $db_user; 
  19. var $db_pass; 
  20. var $db_dbase;
  21. function session()
  22. {
  23. global $baza_admin_sess,$url_db,$username_db,$password_db,$database_db;
  24. $ses_table = $baza_admin_sess; 
  25. $db_host = $url_db;
  26. $db_user = $username_db; 
  27. $db_pass = $password_db; 
  28. $db_dbase = $database_db;
  29.  
  30. }
  31. }
  32.  
  33. ?>

i w config.php daj global $baza_admin_sess,$url_db,$username_db,$password_db,$database_db;

Lub możesz to do konstruktora seesion jako paramtry wwalac te zmienne, jak ci wygodnie
dr_bonzo
@nospor: ten konstruktor to totalna porazka smile.gif

  1. <?php
  2. class session
  3. {
  4. var $ses_table; 
  5. var $db_con=&#092;"Y\"; 
  6. var $db_host;
  7. var $db_user; 
  8. var $db_pass; 
  9. var $db_dbase;
  10.  
  11. function session( $baza, $url, $username, $password, $database )
  12. {
  13. $ses_table = $baza; 
  14. $db_host = $url;
  15. $db_user = $username; 
  16. $db_pass = $password; 
  17. $db_dbase = $database;
  18. //...
  19. }
  20. }
  21.  
  22. $baza_admin_sess; 
  23. $url_db;
  24. // itd....
  25. $z = new session( $baza_admin_sess, $url_db, ..... itd,,,,, );
  26. ?>
nospor
@dr_bonzo może i tak. poprostu kompbinowałem pod kolegę. POzatym na koncu powiedzialem ze może zrobić tak jak proponowaleś. A poza tym i tak trzeba będzie przed wywowlaniem tego konstruktora zrobić global, że by bylo co mu zapodać
pyrek
dr_bonzo możesz mi to bardziej wyjaśnić??

siedze mieszam i już tak namieszałem że już całkiem nic nie wiem:

musze ten plik przerobić tak aby dane includowane c config czyli:

$baza_admin_sess
$url_db
$username_db
$password_db
$database_db były widziane zamiast obecnie zdefiniowanych

var $ses_table = "admin_sessions";

/* Change to 'Y' if you want to connect to a db in
the _open function */
var $db_con = "Y";

/* Configure the info to connect to MySQL, only required
if $db_con is set to 'Y' */
var $db_host = "localhost";
var $db_user = "username";
var $db_pass = "pass";
var $db_dbase = "database name";

a oto ten kod:
  1. <?php
  2.  
  3. /* Create new object of class */
  4. $ses_class = new session(); 
  5.  
  6. /* Change the save_handler to use the class functions */ 
  7. session_set_save_handler (array(&$ses_class, '_open'), 
  8.                           array(&$ses_class, '_close'), 
  9.                           array(&$ses_class, '_read'), 
  10.                           array(&$ses_class, '_write'), 
  11.                           array(&$ses_class, '_destroy'), 
  12.                           array(&$ses_class, '_gc')); 
  13.  
  14. /* Start the session */ 
  15.  
  16. class session
  17. {
  18.     /* Define the mysql table you wish to use with 
  19.        this class, this table MUST exist. */
  20.     var $ses_table = &#092;"admin_sessions\"; 
  21.  
  22.     /* Change to 'Y' if you want to connect to a db in 
  23.        the _open function */ 
  24.     var $db_con = &#092;"Y\"; 
  25.  
  26.     /* Configure the info to connect to MySQL, only required 
  27.        if $db_con is set to 'Y' */ 
  28.     var $db_host = &#092;"localhost\";
  29.     var $db_user = &#092;"username\"; 
  30.     var $db_pass = &#092;"pass\"; 
  31.     var $db_dbase = &#092;"database name\"; 
  32.     /* Create a connection to a database */ 
  33.     function db_connect() {
  34.         $mysql_connect = @mysql_pconnect ($this->db_host, 
  35.                                           $this->db_user, 
  36.                                           $this->db_pass); 
  37.         $mysql_db = @mysql_select_db ($this->db_dbase); 
  38.  
  39.         if (!$mysql_connect || !$mysql_db) { 
  40.             return FALSE; 
  41.         } else { 
  42.             return TRUE; 
  43.         }$d
  44.     } 
  45.  
  46.     /* Open session, if you have your own db connection 
  47.        code, put it in here! */ 
  48.     function _open($path, $name) {
  49.         if ($this->db_con == &#092;"Y\") { 
  50.             $this->db_connect(); 
  51.         } 
  52.  
  53.         return TRUE; 
  54.     } 
  55.  
  56.     /* Close session */ 
  57.     function _close() {
  58.         /* This is used for a manual call of the 
  59.            session gc function */ 
  60.         $this->_gc(0); 
  61.         return TRUE; 
  62.     } 
  63.  
  64.     /* Read session data from database */ 
  65.     function _read($ses_id) {
  66.         $session_sql = &#092;"SELECT * FROM \" . $this->ses_table 
  67.                      . &#092;" WHERE ses_id = '$ses_id'\"; 
  68.         $session_res = @mysql_query($session_sql); 
  69.         if (!$session_res) { 
  70.             return ''; 
  71.         } 
  72.  
  73.         $session_num = @mysql_num_rows ($session_res); 
  74.         if ($session_num > 0) { 
  75.             $session_row = mysql_fetch_assoc ($session_res); 
  76.             $ses_data = $session_row['ses_value']; 
  77.             return $ses_data; 
  78.         } else { 
  79.             return ''; 
  80.         } 
  81.     } 
  82.  
  83.     /* Write new data to database */ 
  84.     function _write($ses_id, $data) {
  85.         $session_sql = &#092;"UPDATE \" . $this->ses_table 
  86.                      . &#092;" SET ses_time='\" . time() 
  87.                      . &#092;"', ses_value='$data' WHERE ses_id='$ses_id'\"; 
  88.         $session_res = @mysql_query ($session_sql); 
  89.         if (!$session_res) { 
  90.             return FALSE; 
  91.         } 
  92.         if (mysql_affected_rows ()) { 
  93.             return TRUE; 
  94.         } 
  95.  
  96.         $session_sql = &#092;"INSERT INTO \" . $this->ses_table 
  97.                      . &#092;" (ses_id, ses_time, ses_start, ses_value)\" 
  98.                      . &#092;" VALUES ('$ses_id', '\" . time() 
  99.                      . &#092;"', '\" . time() . \"', '$data')\"; 
  100.         $session_res = @mysql_query ($session_sql); 
  101.         if (!$session_res) {     
  102.             return FALSE; 
  103.         }         else { 
  104.             return TRUE; 
  105.         } 
  106.     } 
  107.  
  108.     /* Destroy session record in database */ 
  109.     function _destroy($ses_id) {
  110.         $session_sql = &#092;"DELETE FROM \" . $this->ses_table 
  111.                      . &#092;" WHERE ses_id = '$ses_id'\"; 
  112.         $session_res = @mysql_query ($session_sql); 
  113.         if (!$session_res) { 
  114.             return FALSE; 
  115.         }         else { 
  116.             return TRUE; 
  117.         } 
  118.     } 
  119.  
  120.     /* Garbage collection, deletes old sessions */ 
  121.     function _gc($life) {
  122.         $ses_life = strtotime(&#092;"-5 minutes\"); 
  123.  
  124.         $session_sql = &#092;"DELETE FROM \" . $this->ses_table 
  125.                      . &#092;" WHERE ses_time < $ses_life\"; 
  126.         $session_res = @mysql_query ($session_sql); 
  127.  
  128.  
  129.         if (!$session_res) { 
  130.             return FALSE; 
  131.         }         else { 
  132.             return TRUE; 
  133.         } 
  134.     } 
  135. } 
  136. ?>


będe wdzięczny za pomoc!!!
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.