[PHP] Variable aus Funktion auslesen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von uRph03n1x, 25. Juli 2010 .

  1. 25. Juli 2010
    Variable aus Funktion auslesen

    Hallo,

    mal eben schnell eine Einsteigerfrage:

    Ich fang endlich mal an mit Funktionen zu arbeiten und habe mir folgende Funktion geschrieben

    PHP:
    function  loginpruefung () {
    $check  0 ;
    if (
    $_SESSION [ 'u_id' ] !=  "" ) {
    $check  1 ;
    }
    }
    nun rufe ich in meinem hauptprogramm die funktion wie folgt auf
    PHP:
    loginpruefung ();
    Nun möchte ich aber gerne auch in dem Hauptprogramm gucken auf welchen Wert die $check Variable gesetzt wurde aber ohne diese auszugeben. Anders gesagt ich möchte sie für eine weitere Abfrage in dem Hauptprogramm nutzen.

    Wie stelle ich das an? Gibt es einen Trick an die Variable aus der Funktion im Hauptprogramm ranzukommen?

    ----

    Habe mir jetzt auf eine unelegante Art vorerst geholfen:

    Funktion:
    PHP:
    function  loginpruefung () {
    global 
    $check ;

    if (
    $_SESSION [ 'u_id' ] !=  "" ) {
    $check  0 ;

    Hauptprogramm:

    PHP:
    $check  1 ;
    loginpruefung ();
    if (
    $check  1 ) { echo  "geklappt" ; }
    Sollte die Session jetzt leer sein in diesem Fall dann wird check auf 0 gesetzt und es erfolgt keine Ausgabe mehr im Hauptprogramm.

    Sicherlich geht das noch eleganter ohne global. Bin für Informationen offen
     
  2. 25. Juli 2010
    AW: Variable aus Funktion auslesen

    PHP:
    function  loginpruefung () {
       
    $check  "0" ;
       if (
    $_SESSION [ 'u_id' ] !=  "" ) {
          
    $check  "1" ;
       }
       return 
    $check ;
    }  
    PHP:
    $check  loginpruefung ();
    if (
    $check  ==  "1" ) { 
       echo 
    "geklappt"
    }  

    Probier das mal

    Hier eine kleine Anleitung zum "return" PHP: return - Manual

    Edit: Und wenn du eine Variabel auf einen Wert überprüfen möchtest verwende immer 2x =.... einmal = bedeutet nämlich das du dieser Variabel nen Wert zuweisen möchtest
     
  3. 25. Juli 2010
    AW: Variable aus Funktion auslesen

    PHP:
    function  loginpruefung () {
       if (!empty(
    $_SESSION [ 'u_id' ])) {  // das sollte sicher mehr geprüft werden?!?
          
    return  true ;
       }
       return 
    false ;
    }  
    PHP:
    if ( loginpruefung () ==  true ) {
       echo 
    'eingeloggt' ;
    }

    if (
    loginpruefung ()) {
       echo 
    'er ist eingeloggt und so gehts auch' ;
    }
    Sieht aber sehr unsicher aus, deshalb empfehle ich dir noch ein wenig mehr Grundlagen und dieses Tutorial: Quakenet/#php Tutorial - de - Loginskript
     
  4. 25. Juli 2010
    AW: Variable aus Funktion auslesen

    PHP:
    function  check () {
    return !empty(
    $_SESSION [ 'u_id' ]); 
    }
    PHP:
    if ( check ) {
    echo 
    'logged in' ;
    }
    Das reicht vollkommen, irgendwie ist das alles komisch was ihr da macht.
     
  5. 25. Juli 2010
    AW: Variable aus Funktion auslesen

    Hallo,

    sollte auch nur als kleines Beispiel dienen. Ich zeige euch mal eben meine Variante dann könnt ihr mir ja mal sagen, was ihr davon haltet.

    PHP:
    function  loginpruefung () {
        
        global 
    $var_check ;
        
            if (
    $_SESSION [ 'sess_u_id' ] ==  "" ) { 
                include (
    "./content/login.php" );
                
    $var_check  0 ;
            } else {
                
    // ... wenn nicht prüfen ob der Nutzer über einen Proxy kommt
                
    if (!isset( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ])) {
                    
    $client_ip  $_SERVER [ 'REMOTE_ADDR' ];  // reale Client IP ohne Proxy
                
    } else {
                    
    $client_ip  $_SERVER [ 'HTTP_X_FORWARDED_FOR' ];  // reale IP trotz Proxy
                
    }
            } 
                    
            if (
    $_SESSION [ 'sess_log_ip' ] !=  $client_ip ) {  //prüfen ob die Session_IP und Client IP unterschiedlich sind
                
    echo  "Ihre IP stimmt nicht mit der aus Ihrer Session überein. Bitte melden Sie sich neu an<br /><br />" ;
                include (
    "./content/login.php" );
                
    $var_check  0 ;
            } 
             
        }
    Wollte die IP evtl noch mit einer beim Login gespeicherten IP in der Datenbank vergleichen.

    Edit: Danke Badloader deine return Variante gefällt mir besser als meine mit der global
     
  6. 28. Juli 2010
    AW: Variable aus Funktion auslesen

    man kann es auch mit define lösen:
    PHP:
    <? php
    function  prüfen ()
    {
     if(
    $_SESSION [ 'ok' ]== true // session überprüfen... mit ip oder was auch immer
     
    {
     
    define ( 'ACCESS' , true );
    }
    //...
    prüfen ();
    //...
    if(! defined ( 'ACCESS' ))
    {
     echo 
    "kein zugriff" ;
    }
    ?>
     
  7. 28. Juli 2010
    AW: Variable aus Funktion auslesen

    wozu eigentlich die IP adressen vergleich?
    speichere einfach die session_id und vergleiche die gespeicherte session_id mit der aktuellen.

    kommt aber darauf an, ob du generell mit cookies arbeiten willst oder beides anbieten möchtest.
     
  8. 28. Juli 2010
    AW: Variable aus Funktion auslesen

    weil, wenn der user ne neue session-id hat auch ne neue session gestartet wurde ^^
    der ip abgleich dient dazu, session-klau zu verhindern, denn bei session-klau (gestohlener cookie) bleibt die session-id die selbe.
     
  9. 28. Juli 2010
    AW: Variable aus Funktion auslesen

    aber session udn cookie ist doch unterschiedlich oder? bei IP abgleich könnte man sich doch dann quasi nicht an 2 rechner gleichzeitig einloggen ?

    wenn ich aber nur mit sessions arbeite ist es eher schwer sessions zu klauen oder?
     
  10. 28. Juli 2010
    AW: Variable aus Funktion auslesen

    Die Session ist im Cookie (normalerweise). Kann aber auch anders übergeben werden ($_GET oder $_POST z.b.)

    Ja man könnte sich dann QUASI nicht an 2 rechnern anmelden.
     
  11. 29. Juli 2010
    AW: Variable aus Funktion auslesen

    njo ist ja auch sinn der sache

    angenommen die session würde wie in der alten schule via get mit gegeben werden ... so müsste man nur ausversehen den link iwo posten und jeder wäre mit deinen login on! darum lieber ein abgleich und multilogin vermeiden!
     
  12. 30. Juli 2010
    AW: Variable aus Funktion auslesen

    dagegen gibt es session_regenerate_id(), IP abgleich und andere Tricks. So schlimm wäre das also nicht mal.
    Man sollte es am besten aber mit Cookies machen wegen SEO zu Beispiel. Außerdem haben die meisten Cookies aktiviert. Der Sicherheitsaspekt spielt außerdem immer eine Rolle.

    Zu dem Thema Sessions und Sicherheit findest du aber auch sau viel auf php.net selbst:
    PHP: Sessions und Sicherheit - Manual
     
  13. 2. August 2010
    AW: Variable aus Funktion auslesen

    Wobei du auch bedenken musst, dass ein Cookie vom User lokal verändert werden kann, ebenso wie sämtliche POST und GET-Argumente. Sicherer ist imho ein Misch aus Session & Cookie
     
  14. 2. August 2010
    AW: Variable aus Funktion auslesen

    Session in eine Table zusammenfassen, die dann in eine DB hau'n samt Useragent, IP, Sessionbeginn und die UserID; per Cookie dann UserID speichern. Zum Überprüfen dann die Session aus der DB holen, Useragent und IP mit den jetzigen Daten vergleichen und wenn's passt, dann ist es der gleiche User. Die Tabelle mit den aktuellen Sessions sollte natürlich dann per Cronjob aktualisiert werden (Sessionbeginn + Laufzeit = Sessionende).
     
  15. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.