Ankündigung

Einklappen
Keine Ankündigung bisher.

login script macht pobs

Einklappen

Neue Werbung 2019

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

  • login script macht pobs

    hi,
    ich hab mir vor 3-4 wochen schonma ein login script gebastelt, das ging auch,aber jetzt nit mehr.
    an dem script selber hab ich nichts verändert, nur noch was anderes an der main site

    hia das login script(function):
    PHP-Code:
    function check_user($name$pw)
    {
    $sql=mysql_query("SELECT * FROM ".pre."user WHERE nick='$name'");
    while(
    $row=mysql_fetch_assoc($sql))
    {
     if(
    $row['nick']==$name && $row['password']==$pw)
     {
                            echo 
    "Sie sind nun eingeloggt!";
                            
    $_SESSION['loged_in']=$name;
                            echo 
    '<meta http-equiv="refresh" content="1; url=index.php?site=news&id='.md5($_SESSION['user']).'" />';
     }
     else                   {
         echo 
    'Passwort oder Benutzernamen falsch angegeben!
    [url="Javascript:history.back();"]Zurück[/url]'
    ;
         unset(
    $_SESSION['loged_in']);
    }
    }
    return 
    $name;
    }

    function 
    check_admin($name)
    {
    $res=mysql_query("SELECT * FROM ".pre."user WHERE nick='$name'");
    while(
    $row=mysql_fetch_assoc($res))
    {
    if(
    $row['admin']=="yes")
                            
    $_SESSION['admin']=true;
    else
                            
    $_SESSION['admin']=false;
    }
    return 
    $name;

    findet ihr dort fehler??

  • #2
    Was gehjt denn nich?Also ich, und ich glaube andere User auch, kann/kööönen nich hellsehen!
    //EDIT:
    AUasserdem würd ich das nich mot einer while-schleife machen!!

    Kommentar


    • #3
      Wenn du schon editierst zwerg, mach doch die Rechtschreibfehler raus ...

      @fadass: Dein Script ist sehr schlecht gemacht.

      - <meta>-Tags gehören in den <head>, offenbar befindest du dich aber nicht im head, sondern im <body>, oder warum gibst du gleichzeitig auch noch Text aus?
      - Zur Weiterleitung kannst du den Befehl header("Location: ziel.php"); verwenden
      - Außerdem, hast du "pre" als Konstante deklariert? Oder woher kommt "pre"? Konstanten schreibt man GROSS.
      - Wozu gibt deine Funktion $name zurück, egal was passiert, das auch noch obwohl du $name ja als Argument übergibst und es nicht geändert wird.
      - "loged_in" schreibt sich mit doppel-g.
      - Warum benutzt du eine while-Schleife in der 2. Funktion, wenn du nur eine Ergebnis-Zeile erwartest, SQL kennt den LIMIT-Befehl.
      - Die nächste Frage wäre, warum benutzt du überhaupt 2 Funktionen? Du könntest locker alles in eine packen, die dir dann meinetwegen als return-Wert zurückgibt, ob der User ein Admin ist.

      Kommentar


      • #4
        @zwerg: der scheitert scheinbar beim einloggen, bzw beim überprüfen von name/pw und Session setzen

        hmm......

        jo danke schonma, aber es ging ja vorher ohne probleme, warum jetzt net mehr?

        das mit den while schleifen ist nur weil ich mit den anderen spökes noch net so beschäfftigt hab.
        dann ma überlegen, wodran kann es liegen..........

        Kommentar


        • #5
          Lass dir überall per echo relevante Variablen ausgeben und überprüf ob sie den erwarteten Wert haben.

          Kommentar


          • #6
            sauba sind schonma ein schritt weiter......
            Sessions werden scheinbar net gesetzt......

            Kommentar


            • #7
              Zitat von fadass
              Sessions werden scheinbar net gesetzt......
              Session gestartet?
              Diese Erweiterung ist EXPERIMENTELL.
              [...]
              Seien Sie gewarnt und verwenden Sie diese Erweiterung auf eigenes Risiko..

              Kommentar


              • #8
                jo

                Kommentar


                • #9
                  habs hinbekommen.....
                  hab es dies mal net in eine function sondern so direkt in die page geschrieben
                  PHP-Code:
                  <?php
                   $sql
                  =mysql_query("SELECT nick, password, admin FROM ".pre."user WHERE nick='$login_name'");
                                  while(
                  $row=mysql_fetch_assoc($sql))
                                  {
                                  if(
                  $row['nick']==$login_name)
                                  {
                                  if(
                  $row['password']==$login_pw)
                                  {
                                  
                  $_SESSION['logged_in']=$login_name;
                                  if(
                  $row['admin']==1)
                                  
                  $_SESSION['admin']=true;
                                  echo 
                  "Sie sind nun eingeloggt!";
                                  echo 
                  '<meta http-equiv="refresh" content="2; url=index.php?site=news" />';
                                  }
                                  else
                                  {
                                  unset(
                  $_SESSION['logged_in']);
                                  unset(
                  $_SESSION['admin']);
                                  echo 
                  "Passwort oder Benutzernamen falsch eingegeben!";
                                  }
                                  }
                                  }
                  ?>

                  Kommentar


                  • #10
                    Warum benutzt du daf�r eine while-Schleife? Mit der MySQL-FUnktion COUNT() k�nntest du wesentlich schneller und unkomplizierter ans Ziel kommen:
                    PHP-Code:
                    <?php
                        $sql 
                    sprintf("SELECT
                                                    COUNT(*),
                                                    IF(admin = 1, 1, 0)
                                                FROM
                                                    `%suser`
                                                WHERE
                                                    nick          = '%s' AND
                                                    password = '%s'
                                                GROUP BY
                                                    nick"
                    ,
                                        
                    mysql_real_escape_string($login_name),
                                        
                    mysql_real_escape_string($login_pw));
                        
                    $result mysql_query($sql);
                        
                    $row mysql_fetch_row($result);

                        if(
                    $row[0] == 1) {
                            
                    $_SESSION['logged_in'] = $login_name;
                            if(
                    $row[1] == 1) {
                                
                    $_SESSION['admin'] = true;
                            }
                        } else {
                            unset(
                    $_SESSION['logged_in'], $_SESSION['admin']);
                        }
                    ?>

                    Kommentar

                    Lädt...
                    X