Avatar billede djthomas Nybegynder
15. juli 2004 - 23:22 Der er 8 kommentarer og
1 løsning

sessions og classes

Hej

jeg prøver flg
<?

session_start();

class noget{

  function one{
    $_SESSION['logintime'] = "nu";
    var_dump( $_SESSION['logintime'] );
  }

  function two{

      $this->one();

      print $_SESSION['logintime'];

  }

}

$p new noget;
print $p->two();

?>

Hvorfor kan jeg hverken se min session i var_dump() eller i function two? Det forstår jeg altså ikke noget af. Burde en SESSION ikke være "global" så den kan tilgåes alle steder fra? eller er det noget noget andet når de blir sat i et objekt?
Avatar billede 7th Praktikant
16. juli 2004 - 00:00 #1
class Structure
{
    function one()
    {
        $_SESSION['logintime'] = "nu";
        var_dump ($_SESSION['logintime']);
    }

    function two()
    {
        $this -> one();
        return $_SESSION['logintime'];
    }
}

$scr = new Structure();
print $scr -> two();

virker hos mig. Du mangler en = og nogle paranteser.
Avatar billede djthomas Nybegynder
16. juli 2004 - 00:18 #2
Hmmm sådan her ser den rigtige kode så ud og jeg forstår altså ikke selv at det ikke virker.

<?php

class login{


    function print_login_form(){
        ?>
            <div style="padding-left: 3px;">
                <strong>LOG IND</strong>
            </div>
           
            <form action="/?page=login" method="post" name="login">
                <div style="padding-left: 3px;">
                    <input type="text" name="username" value="Brugernavn" size="16" class="input">
                </div>
                                       
                <div id="spacer"></div>
                                       
                <div style="padding-left: 3px;">
                    <input type="text" name="password" value="Password" size="16" class="input">
                </div>
                                       
                                                   
                                       
                <div style="text-align: right;">
                    <input type="submit" value="Login" class="button">
                </div>
            </form>
           
            <div style="padding-left: 3px;">
                <a href="">Har du glemt dit password?</a>
            </div>
                               
            <div id="spacer"></div>
       
        <?
       
    }
   
   
    function check_user( $username ){
        $result = mysql_query("SELECT
                                    *
                                FROM
                                    userprofile
                                WHERE
                                    username = '$username'") or die(mysql_error());
                                   
        if( $result ){
           
            if( mysql_num_rows( $result ) == 0 ){
                return false;
            } elseif( mysql_num_rows( $result ) >= 2 ){
                return false;
            } else {
                return true;
            }
           
        }
    }
   
    function check_password( $username ){
        $result = mysql_query("SELECT
                                    password
                                FROM
                                    userprofile
                                WHERE
                                    username = '$usermane'") or die(mysql_error());
                                   
        if( $result ){
            if( mysql_num_rows( $result ) == 0 ){
                return false;
            } elseif( mysql_num_rows( $result ) >= 2 ){
                return false;
            } else {
                return true;
            }
        }
    }
   
    function get_password( $username ){
        $result = mysql_query("SELECT
                                    password
                                FROM
                                    userprofile
                                WHERE
                                    username = '$username'") or die(mysql_error());
                                   
        if( $result ){
       
            $password = mysql_fetch_array( $result );
       
            return $password;
        }
    }
   
    function do_login(){
   
        $username = $_POST["username"];
        $password = $_POST["password"];
   
        if( validate_username( $username ) ){
       
            if( $this->check_user( $username ) ){
                           
                $returned_password = $this->get_password( $username );
               
                if( $returned_password == $password ){
                   
                    $logTime = "yes";
                    return $_SESSION['$logTime'];
                   
                    //$_SESSION['logTime'] = "yes";
                   
                    var_dump( $_SESSION['logTime'] );
                }
                       
            }
           
        } else {
           
            print "Ugyldige tegn i brugernavn<br />";
            print "Username = \"".$username."\"";
        }
    }
   
    function print_user_info(){
        print "User info";
    }
   
    function print_login(){
   
        if($_POST["username"]){
            print $this->do_login();
        } elseif($_SESSION['logTime']) {
            print $this->print_user_info();
        } else {
            print $this->print_login_form();
        }
    }

}

$login = new login;
                                                       
                            print $login->print_login();

?>
Avatar billede Slettet bruger
16. juli 2004 - 00:30 #3
Det her ser underligt ud:

                    $logTime = "yes";
                    return $_SESSION['$logTime'];
Avatar billede djthomas Nybegynder
16. juli 2004 - 01:38 #4
Ups ja det gør det også, nu har jeg lavet det om til det her

$logTime = getdate();
                    $_SESSION['logTime'] = $logTime;
                    return $_SESSION['$logTime'];

og det virker stadig ikke... Der kommer i øvrit heller ikke nogen fejlmeddelser...

Er der slet ikke noget der kan gennemskue det?
Avatar billede Slettet bruger
16. juli 2004 - 03:25 #5
do_login returnerer stadig med megen stor sandsynlighed en tom variabel.

Prøv med

return $_SESSION['logTime'];

Bemærk at jeg fjernede et $-tegn.

Derudover er det egentlig bedre at checke om den er sat således:

elseif(isset($_SESSION['logTime']))
Avatar billede djthomas Nybegynder
16. juli 2004 - 03:31 #6
Nu ser det sådan ud.

$logTime = getdate();
                    $_SESSION['logTime'] = $logTime;
                    return $_SESSION['logTime'];

Men sessionen blir simpelt hen ikke sat. Var_dump($_SESSION['logTime']) printer NULL
Avatar billede Slettet bruger
16. juli 2004 - 13:38 #7
Er du sikker på, at der ikke er noget andet galt, så den bare ikke kommer til det sted i koden, hvor den bliver sat?

Bare for fejlsøgning, prøv dette:

$_SESSION['logTime'] = $logTime;
echo '$_SESSION['logTime'] er nu sat til: ' . $_SESSION['logTime'];
return $_SESSION['logTime'];
Avatar billede djthomas Nybegynder
16. juli 2004 - 14:41 #8
sanbox jeg tør næsten ikke sige det, emn du havde ret... Man kom slet ikke der ind i koden. My bad..... svar og du er 60 point rigere for din ulejlighed
Avatar billede Slettet bruger
16. juli 2004 - 14:58 #9
Fik du det fixet så?
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