bei Klick auf Seitennavigation erscheint wieder Login Formular

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

  • bei Klick auf Seitennavigation erscheint wieder Login Formular

    Hallo,

    ich habe eine admin.php datei, welche mit funktionen aufgebaut ist

    PHP-Code:
    function main()
    {
        
    // Aktion lesen
        
    $action 0;
        if (isset(
    $_REQUEST['action']))
            
    $action $_REQUEST['action'];
            
        switch (
    $action)
        {
            case 
    0showLogin(); break; // Login Formular
            
    case 1doLogin(); break;   // Wenn Login erfolgreich, Insert-Maske
            
    case 2insertNews(); break;// Schreiben in die Datenbank (Insert)
            
    case 3deleteNews(); break;// Newsletter Löschen
            
    case 4showAdmin(); break;  // Newsletter Bearbeiten
            
    case 5showCompany(); break; // Suchformular
            
    default: showLogin(); break;
        }

    Es wird also zuerst das Loginformular aufgerufen. Dahinter wird der Check gemacht "doLogin()"

    Wenn das Login OK ist, wird "case 5: showCompany" aufgerufen.

    Soweit funktioniert das alles. Nun habe ich in der funktion showCompany eine Seitennavigation dazugegeben.

    Wenn ich in dieser Navigation auf eine andere Seitenzahl klicke, ist der Link zwar richtig, aber es wird wieder das Login Formular angezeigt.

    PHP-Code:
    ...
    $links[] = '<a href="admin.php?go='.$i.'">'.$i.'</a>';
    ... 
    was mach ich da falsch?

    LG, m-werk
    LG, m-werk

  • #2
    Hallo,

    ?go=irgendwas ist nicht dasselbe wie ?action=irgendwas, da du in der Navigation aber Links mit go generierst, tritt der default-Wert für action (0) in Kraft und sorgt für den Login.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      das leuchtet mir ein. leider habe ich den ursprünglichen code nicht selbst geschrieben, sondern ein ehemaliger mitarbeiter hat den erstellt, und nun wollte ich einfach eine navigation einbauen, da es in der datenbank schon sehr viele datensätze diesbezüglich gibt.

      Wie bzw. was muss ich nun wie tun?
      LG, m-werk

      Kommentar


      • #4
        Zitat von m-werk Beitrag anzeigen
        Wie bzw. was muss ich nun wie tun?
        Die Links so erzeugen, dass der action-Parameter durchgeschleift wird:

        PHP-Code:
        $links[] = '<a href="admin.php?action='.$action.'&go='.$i.'">'.$i.'</a>'
        Allerdings scheint mir das ganze ziemlich anfällig. Für mich sieht es so aus, als ob man auch völlig ohne Anmeldung eine beliebige Seite aufrufen kann, wenn man die entsprechenden Parameter kennt.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Zitat von AmicaNoctis Beitrag anzeigen
          Die Links so erzeugen, dass der action-Parameter durchgeschleift wird
          Oder du arbeitest mit Sessions und erweiterst die Bedingung entsprechend.

          Peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            Da die Navigation und die dazugehörige Abfrage in einer Funktion verpackt sind, muss ich dann $action=5; schreiben, oder? Sonst weiss der link nicht, welche Aktion gemeint ist.

            Das hab ich nun auch so gemacht. Funktioniert zwar, aber nun habe ich noch kein ergebniss.

            Ich habe auch eine Combobox, die zuvor ausgefüllt weden muss, damit das Ergebniss erscheint.

            Das funktioniert prima nach dem Login.

            PHP-Code:
            $ausCID 0;
            $ausCName 'leer';
                    
            $str_sql 'SELECT * FROM company';
            $result $db->select($str_sql,1);
            $option_str '';
            foreach (
            $result as $row)
            {
                
            $selected '';
                if (
            $CID == $row[0])
                {
                    
            $selected 'selected';
                    
            $ausCID $row[0];
                    
            $ausCName $row[1];
                }
                
            $option_str .= '<option value="'.$row[0].'" '.$selected.'>'.$row[1].'</option>';
            }
                        
            echo 
            '<form name="search_news" action="admin.php" method="post">';
            echo 
            '<table id="tbl_insert">';
            echo 
            '  <tr>';
            echo 
            '  <td style>Unternehmen: <select style="width:200px" name="CID">'.$option_str.'></select></td>';
            echo 
            '</tr><tr>';
            echo 
            '  <td style="padding-left:97px"><input type="submit" class="button1" value="Suchen" /></td>';
            echo 
            '</tr></table>';
            echo 
            '<input type="hidden" name="action" value="5" />';
            echo 
            '</form>'
            Dannach wird folgendes SQL aufgerufen:
            PHP-Code:
            $str_sql 'SELECT * FROM newsletter WHERE CID="'.$CID.'" ORDER BY NDate DESC LIMIT '.$start.','.$datensaetze_pro_seite;
            $result $db->select($str_sql,1); 
            So, aber auch für die Navigation habe ich ein SQL:
            PHP-Code:
            //Select-Abfrage für die Navigation
                
            $str_sql 'SELECT * FROM newsletter WHERE CID="'.$CID.'" ORDER By NDATE DESC'
            Wenn ich nun auf eine Navigationsseite klicke, kommt eine leere Seite und ich muss wieder ein Unternehmen aus der Combobox auswählen.

            Dann sehe ich wieder nur die 1. Seite
            LG, m-werk

            Kommentar


            • #7
              Trotz des vielen Codes ist das grad irgendwie nicht nachzuvollziehen. Ich habe eine Vermutung, aber die kann ich mit dem geposteten Code weder bestätigen noch widerlegen.

              Definierst du bestimmte Variablen außerhalb von Funktionen und versuchst dann, innerhalb einer Funktion darauf zuzugreifen? Z. B. $action, $CID, ...

              Wenn ja, das geht nicht, weil Funktionen ihren eigenen Scope haben. Man kann zwar innerhalb der Funktion eine Variable als global deklarieren und somit eine äußere Variable in den Funktionsscope importieren, aber das ist schlechter Stil. Besser wäre es, die benötigten Variablen mit an die Funktion zu übergeben und deren Signatur entsprechend zu ergänzen.

              Edit: wenn du zu dem Ersteller noch einen guten Draht hast (bei ehemaligen Mitarbeitern weiß man das ja nicht so), kannst du den ja fragen, ob er das in Ordnung bringt. Noch besser wäre es allerdings, einen Profi zu bezahlen, damit der das nochmal neu und ordentlich baut. Aus deinem geposteten Code sind schon jetzt Sicherheitsmängel erkennbar (SQL Injection). Falls das im Intranet läuft, mag es noch gehen, aber im Internet könnte es in dieser Form gefährlich werden.
              Zuletzt geändert von AmicaNoctis; 18.11.2009, 15:53.
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Kommentar


              • #8
                Naja, hab schon noch kontakt zu ihm, aber er tut nichts mehr.

                Aber egal, ich hab es trotzdem selbst geschaft. Hab auch im Link der Navigation einen weiteren Parameter übergeben müssen. Somit laufen alle Tests sehr gut und es funktioniert.

                DANKE für die Hilfe
                LG, m-werk

                Kommentar

                Lädt...
                X