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?
Annonceindlæg fra Cognizant
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.
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(); ?>
Slettet bruger
16. juli 2004 - 00:30
#3
Det her ser underligt ud: $logTime = "yes"; return $_SESSION['$logTime'];
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?
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']))
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
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'];
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
Slettet bruger
16. juli 2004 - 14:58
#9
Fik du det fixet så?
Vi tilbyder markedets bedste kurser inden for webudvikling