Avatar billede tdh Nybegynder
28. maj 2002 - 17:19 Der er 1 kommentar og
1 løsning

PHP - session objecter!

Jeg sidder og slås lidt med et object i PHP.
Jeg kan skrive og læse i det ved eks.:
$HTTP_SESSION_VARS['rz->By']="Taastrup";

Dette fungerer glimrende, problemet er mine metoder. Jeg kan ikke ændre mine variable gennem disse:
I filen class_test.php prøver jeg at sætte Brugernavn, og i filen varscope_test2.php udskriver jeg variablen men den er tom:

Jeg vil gerne have noget meget konkret, for jeg er meget desperat....

Mit eksempel skal virke SOMEHOW!!!!
Nedenfor er al min kode:

Fil: class_test.php
<?php
session_start();

include("classes/user.php");

$HTTP_SESSION_VARS['$rz'] = new user_ses();
$HTTP_SESSION_VARS['rz->By']="Taastrup";

$HTTP_SESSION_VARS['rz->check_input("Brugernavn","Thomas")'];

$HTTP_SESSION_VARS['rz->Log_stat']="Off";
echo($HTTP_SESSION_VARS['rz->By']);
echo($HTTP_SESSION_VARS['rz->Brugernavn']);


?>
<a href="varscope_test02.php">Klik her</a>

Fil: varscope_test02.php
<?php
session_start();
echo("TEST :" . $HTTP_SESSION_VARS['rz->By']);
echo("Brugernavn:" . $HTTP_SESSION_VARS['rz->Brugernavn']);

If ($HTTP_SESSION_VARS['rz->Log_stat']=="Off")
{
    $HTTP_SESSION_VARS['rz->Log_stat']="On" ;
    echo("Off");
}
Else
{
    $HTTP_SESSION_VARS['rz->Log_stat']=="Off" ;
    echo("On");
}
$HTTP_SESSION_VARS['rz->BY']="Nakskow";

?>
<a href="varscope_test02.php">Klik her</a>

Fil: user.php
<?php
# Classes by Thomas D. Hansen IKT Stud #8351
    # Set script time limit to 120 seconds.
    set_time_limit(120);
    /*
        Class    :    session
        Purpose  :    mannage user on www.televogterne.dk
        Variables :           
                        sqlhost
                        sqluser
                        sqlpass
                        username        - Username to login
                        Password        - Password to login
                        Husstand_nr      - ID for the Houshold
                        Bruger_navn      - Name on the Houshold
                        Vej              -
                        Husnummer
                        Etage
                        By
                        Postnummer
                        Email_adr
                        Status          - Where is the user in the process
                        Log_stat        - Is the user Logged IN or Logged Off

                   
        Functions :
            login ()        - Check Username and Password, and create Object
            create ()        - Creates a new Houshold (stores variables in table)
            delete ()        - Deletes a Houshold (deletes variable in table)
            set_var (Variable,Value)      - Gives the Variable the desirede value!       
           
                    bool source(string image_file)
                        Loads image_file as the active source image

                    bool resize()
                        Performs a pixel resize on the source image

                    bool resample()
                        Performs a resample on the source image


            All returns true on success, otherwise false.
    */
    class user_ses
    {                       
          var $sqlhost;        #
              var $sqluser;            #
              var $sqlpass;            #
             
              var $err;                  # Error Output String
              var $err_no;            # Error No.
             
              var $username;        # Username to login, String 20 characters long
              var $Password;        # Password to login, String 20 characters long
              var $Husstand_nr;    # ID for the Houshold, Integer
              var $Brugernavn;    # Name on the Houshold, String 40 characters long
              var $Vej;            # Adress, String 60 characters long
              var $Husnummer;      # Number, String 10 characters long
              var $Etage;          # Floor, String 10 characters long
              var $By;              # City, String 60 characters long
              var $Postnummer;      # Postal code, String 4 characters long
              var $Email_adr;      # Email adress, String 60 characters long
              var $Status;          # Where is the user in the process
              var $Log_stat;        # Is the user Logged IN or Logged Off
             
               
        # Main function         
        function user_ses()
        {
              # Initialize variables with default values
              $this->$sqlhost="thomas";     
              $this->$sqluser="";      #
              $this->$sqlpass="" ;      #
              $this->$username="";      # Username to login, String 20 characters long
              $this->$Password="";      # Password to login, String 20 characters long
              $this->$Husstand_nr="";  # ID for the Houshold, Integer
              $this->$Brugernavn="";      # Name on the Houshold, String 40 characters long
              $this->$Vej="";          # Adress, String 60 characters long
              $this->$Husnummer="";    # Number, String 10 characters long
              $this->$Etage="";        # Floor, String 10 characters long
              $this->$By="";            # City, String 60 characters long
              $this->$Postnummer="";    # Postal code, String 4 characters long
              $this->$Email_adr="";    # Email adress, String 60 characters long
              $this->$Status="Start";  # The user is now starting
              $this->$Log_stat="Off";  # The user is not logged in
        }
             
        # Check if variable is OK!
        function check_input($Variable,$Value)         
        {
              switch ($Variable)
              {
                  case "Brugernavn":
                        If (strlen($Value)<4)
                        {
                            return ("Brugernavnet skal være på mindst 4 karakterer.<br>");                           
                        }
                        Elseif (strlen($Value)>20)
                        {
                            return ("Brugernavnet må højest være på 20 karakterer.<br>");
                        }
                        Else
                        {
                            $this->Brugernavn="test";
                            return ("");                         
                        }
                  break;
                 
                  case "Fornavn":
                        If (strlen($Value)<1)
                        {
                            return ("Du skal indtaste dit fornavn.<br>");                           
                        }
                        Elseif (strlen($Value)>60)
                        {
                            return ("Fornavnet må højest være på 60 karakterer.<br>");
                        }
                        Else
                        {
                            return ("");
                        }
                  break;
                 
                  case "Efternavn":
                        If (strlen($Value)<1)
                        {
                            return ("Du skal indtaste dit efternavn.<br>");                           
                        }
                        Elseif (strlen($Value)>60)
                        {
                            return ("Efternavnet må højest være på 60 karakterer.<br>");
                        }
                        Else
                        {
                            return ("");
                        }
                  break;
                 
                  case "Vej":
                        If (strlen($Value)<1)
                        {
                            return ("Du mangler indtaste vejnavn.<br>");                           
                        }
                        Elseif (strlen($Value)>60)
                        {
                            return ("Vejnavnet må højest være på 60 karakterer.<br>");
                        }
                        Else
                        {
                            return ("");
                        }
                  break;
                 
                  case "Husnummer":
                        If (strlen($Value)<1)
                        {
                            return ("Du skal indtaste husnummer.<br>");                           
                        }
                        Elseif (strlen($Value)>10)
                        {
                            return ("Husnummer må højest være på 10 karakter.<br>");
                        }
                        Else
                        {
                            return ("");
                        }
                  break;
                 
                  case "Etage":
                        If (strlen($Value)>10)
                        {
                            return ("Etage må højest være på 10 karakterer.<br>");
                        }
                        Else
                        {
                            return ("");
                        }
                  break;
                 
                  case "Postnummer":
                        If (strlen($Value)!=4)
                        {
                            return ("Dit postnummer skal være på fire cifre.<br>");                           
                        }
                        Else
                        {
                            return ("");
                        }
                  break;
                 
                  case "By":
                        If (strlen($Value)<1)
                        {
                            return ("Du skal indtaste by.<br>");                           
                        }
                        Elseif (strlen($Value)>60)
                        {
                            return ("Bynavnet kan højest være på 60 karakterer.<br>");
                        }
                        Else
                        {
                            return ("");
                        }
                  break;
                 
                  case "Email_adr":
                        If (!ereg("^.+@.+\..+$", $Value))                       
                        {
                            return ("Du skal indtaste en gyldig email adresse.<br>");
                        }
                        Else
                        {
                            return ("");
                        }
                  break;
                 
                  case "Password1":                  // Ignorer
                       
                        {
                            return ("");
                        }
                  break;
                 
                  case "Password2":                  // Ignorer
                       
                        {
                            return ("");
                        }
                  break;
                 
              }
              Return("Funktionsfejl - ukendt variabel: ".$Variable."<br>");
    }
             
        function check_pass($Pass1,$Pass2)   
        {
              If ($Pass1 != $Pass2)
              {
                  return ("Du har indtastet forkert i et af Password felterne, prøv igen");
              }
              If (strlen($Pass1)<4 or strlen($Pass2)<4)
              {
                  return ("Dit password skal være på mindst 4 karakterer.");
              }
              If (strlen($Pass1)>20 or strlen($Pass2)>20)
              {
                  return ("Dit password må højest være på 20 karakterer.");
              }
              return ("");
        }   

        function create_user($Navn, $Password, $Fornavn, $Efternavn, $Vej, $Husnummer, $Etage, $Postnummer, $By, $Email,$Type)
        {
              if (!($link = mysql_pconnect ("localhost","happyweb4ucom","17858")))
              {
              return("Der er ingen forbindelse til databasen.");
              }
                                                                     
              if (!($newresult = mysql_db_query("happyweb4ucomdb", "INSERT INTO bruger (`Brugernavn`, `Password`, `Fornavn`, `Efternavn`, `Vej`,`Husnummer`, `Etage`, `Postnummer`, `By`, `Email_adr`, `Type`)
              VALUES ('$Navn', '$Password', '$Fornavn','$Efternavn' , '$Vej', '$Husnummer', '$Etage', '$Postnummer', '$By', '$Email','$Type')")))
              {
                  return("Brugernavnet <b>". $Navn ."</b> er i brug, prøv venligst med et nyt brugernavn.");
              }
              return("");
        }
        }
   
?>
Avatar billede jan_k Nybegynder
29. maj 2002 - 02:02 #1
Hmmm. jeg har godtnok ikke rodet så meget med objekter i PHP, men jeg mener du assigner dine session vars forkert.

Din linie:
$HTTP_SESSION_VARS['$rz'] = new user_ses();
Er jeg rimelig sikker på skal lyde:
$HTTP_SESSION_VARS['rz'] = new user_ses();

Ud over det, alle de steder du kalder metoder og assigner/læser variable i objektet, mener jeg at '->' skal stå udenfor de kantede paranteser efter "$HTTP_SESSION_VARS", fx:

Din linie:
$HTTP_SESSION_VARS['rz->By']="Taastrup";
Mener jeg skal lyde:
$HTTP_SESSION_VARS['rz']->By="Taastrup";

Evt. lav en lokal variabel, $rz, som du bruger til at arbejde med objektet - og så til sidst smider du objektet over i SESSION_VARS, så sparer du dig selv for en masse tastearbejde, og får noget kode der er nemmere at læse.

Altså:
$rz=new user_ses();
$rz->By="Taastrup";
....
$HTTP_SESSION_VARS["rz"]=$rz;

Håber det hjælper
Avatar billede tdh Nybegynder
29. maj 2002 - 11:02 #2
Tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester