Anfänger Needs Help: User eingeloggt abfragen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Anfänger Needs Help: User eingeloggt abfragen

    Hi Leute,

    ich habe folgendes Problem. Ich habe eine TAbelle in meiner Mysql datenbank wo die userdaten gespeichert werden.

    Unteranderem session und expire (ablaufzeit des logins)

    per
    PHP-Code:
    $expire time() + 60*30
    setzte ich das limit der einloggdauer auf 30 Minuten.

    Nun zu meinem eigentlichen Problem wie erstelle ich eine funktion die überprüft ab 1. der user eingeloggt ist und 2. der user noch in dem limit is. So das ich das ganze dann per if abfragen kann und je nahc dem ob der user noch online ist ode rnicht anderen Inhalt anzeigen kann.


    PHP-Code:
    if (isonline($sessionid)) {
     echo 
    "Du bist Online";
    }else{
     echo 
    "Du bist nicht mehr Online";


    Würde mich über hilfe von euch freuen.

    gruß
    TheBlackAngel


  • #2
    wie wäre es mit:

    Code:
    <?php
    
    /*
    Hier kommt eine SQL-Abfrage hin, die alte Sessions löscht
    */
    
    $sess = mysql_real_escape_string($sess);
    $sql = "SELECT goneOnline, lastMove FROM onlineTable where onlineSess = '$sess' LIMIT 1";
    
    $result = mysql_query($sql);
    
    //enterSite ist der Zeitstempel, wann der user online gekommen ist, 
    lastMove ist der zeitstempel, wann der user das letzte mal etwas unternommen hat
    
    $isOnline = @mysql_num_rows($result) == 1;
    if($isOnline)
    {
      $goneOnline = mysql_result($result,0,0);
      $lastMove = mysql_result($result,0,1);
      $totalOnline = $lastMove - $goneOnline;
    }
    
    ?>
    jetzt hast alle variablen die du brauchst!

    greetz Flip

    EDIT:

    Code umgebrochen. Das nächste Mal machst du das selber!

    Zuletzt geändert von jahlives; 27.02.2008, 08:51.
    Find Parties?
    Partysuche

    Kommentar


    • #3
      Ich habe mal die Tutorials durchsucht und bin da auf nen Tut für nen Loginscript gestoßen.

      Habe mal folgende kleine PHP Funktion mit abfrage ob on oder off
      erstellt.

      Funktioniren tut sie nicht und das warscheinlich weils müll is was ich da gemacht habe



      PHP-Code:
      <?php
      function logged_in()
      {
          
      $sql="SELECT UserID
          FROM users
          WHERE session='"
      .session_id()."'
          LIMIT 1"
      ;
          
      $resultmysql_query($sql);
                if ( 
      mysql_num_rows($result)==1); {
                    
      $sql2="SELECT expire FROME users WHERE session'".session_id()."' LIMIT 1";
                    
      $result2mysql_fetch_row($sql2);
                  if (
      $result2 => $ablauf){
                      return 
      "1";    
                  } else {
                      return 
      "0";
                  }
              } else {
                  return 
      "0";
              }



      echo 
      'Sie sind ';
      if (!
      logged_in())
          echo 
      'nicht ';
      echo 
      'eingeloggt.<p />';
      echo 
      '<a href="login.php">Start</a>'
      ?>

      Kommentar


      • #4
        PHP-Code:
        $sql2="SELECT expire FROM[b]E[/b] users WHERE session'".session_id()."' LIMIT 1"
        kann ja nicht funzen. Ein anständiges Error Reporting und ein Abfangen allfälliger Mysql-Fehler hätte diesen Missstand sofort angezeigt.
        Wieso machst du überhaupt zwei Requests? Geht doch auch in einem
        PHP-Code:
        $sql="SELECT UserID,expire
            FROM users
            WHERE session='"
        .session_id()."'
            LIMIT 1"

        Gruss

        tobi
        @flip
        Bitte noch den Code umbrechen...
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Hmm irgendwie klappt es nicht so wie ich mir das vorstelle
          Habe nun folgende funtion

          PHP-Code:
          function logged_in()
          {
              
          $ablauf time() + 60*30;
              
              
          $sql="SELECT ID,expire
              FROM user
              WHERE session='"
          .session_id()."'
              LIMIT 1"
          ;
              
          $resultmysql_query($sql);
                    if ( 
          mysql_num_rows($result['ID'])==1); {
                      if (
          $result['expire'] => $ablauf){
                          return 
          "1";    
                      } else {
                          return 
          "0";
                      }
                  } else {
                      return 
          "0";
                  }


          und bekomme folgende fehlermeldung

          Parse error: parse error, unexpected T_DOUBLE_ARROW in /var/www/web25/html/paidmail/funktion.php on line 17

          Kommentar


          • #6
            is das hier Line 17?
            PHP-Code:
             if ($result['expire'] => $ablauf){ 

            Kommentar


            • #7
              Und was hat hier

              if ( mysql_num_rows($result['ID'])==1); {

              das olle Semikolon verloren?

              Was ist denn nun zeile 17?

              Kommentar


              • #8
                vor allem ist das mysql_num_rows erstens unnötig, weil LIMIT 1 (session_id sind eh eindeutig) und zweitens
                wendet man es eherauf ein resource, hier $result, an.

                Weiterhin würde ich dem TO vorschlagen sich doch bitte durch einige
                Tutorials zu fressen

                Kommentar


                • #9
                  Original geschrieben von TheBlackAngel

                  PHP-Code:
                  ...
                              if (
                  $result['expire'] => $ablauf){
                  ... 
                  Der Operator heisst "[COLOR=crimson]>=[/COLOR]", nicht "=>". Ausserdem bezweifle ich, dass das Datum in der Datenbank als Unix-Timestamp gespeichert ist (sollte wenigstens nicht so sein), also sollte die Abfrage z.B. so heissen:
                  PHP-Code:
                  $sql "
                      SELECT
                          id,
                          UNIX_TIMESTAMP(expire)
                      FROM
                          user
                      WHERE 
                          session = '" 
                  session_id() . "'"
                  Der Rest wurde ja schon gesagt.

                  @Flip7
                  Brich endlich deine Code um
                  Gruss
                  H2O

                  Kommentar

                  Lädt...
                  X