Ankündigung

Einklappen
Keine Ankündigung bisher.

problem mit $_POST

Einklappen

Neue Werbung 2019

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

  • problem mit $_POST

    Hi
    ich hab ein Problem un keinew blassehn Schimmer warum.
    Ich habe ein Anmeldeformular, das schicke ich an news.php:
    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <title>News</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
    </head>
    <link rel="stylesheet" type="text/css" href="../schule/style.css">
    <body>
    <?php
    //log einbinden
    require_once 'auth.php';
    
    //log instanziieren
    $auth = new auth();
    
    //Abmelden
    if (isset($_GET['to']) && $_GET['to'] == 'logout') {
      $auth->logout();
    }
    
    ?>
    <table border="0" cellspacing="0" cellpadding="0">
    	<tr>
    		<td background="../schule/spacer.png" width="100"></td>
    		<td height="30" background="../schule/news_tst.png" width="200"><div align="center">News</div></td>
    		<td height="30" background="../schule/oben_pers_daten.png" width="200"><div align="center">Pers. Daten</div></td>
    		<td background="../schule/spacer.png" width="100">Logout</td>
    	</tr>
    	<tr>
    		<td colspan="4" width="400"></td>
    	</tr>
    </table>
    <div class="news">
    		<u>News</u><a name="top"></a>
    </div>
    
    
    </body>
    </html>
    und was ich mit der klasse auth auswerten will(hab ich in news.php eingebunden) auth:
    Code:
    <?php
    class auth 
    {
     public function __construct() 
     {
      $this->login();
     }
    
     private function login()
     {
      //preft ob schon eine session vorhanden ist
       if (isset($_SESSION['login_hash'])) {
       $this->confirmauth();
       return;
      }
      if (!isset($_POST['nick']) || !isset($_POST['pw'])) {
       $this->redirected('?Notset');
      }
       //variablen fuer die Datenbank abfrage maskieren
       $nick= ($_POST['nick']);
       $pw = md5($_POST['pw']);
       $pw = ($pw);
       //DB Daten includen
       include ('connect.php');
       //DB Abfrage ob nuer ein user mit dieser pw/nick kombination vorhanden ist
      echo $sql = "SELECT * FROM benutzer 
              WHERE nick = '$nick' AND
                    pw = '$pw'";
       $result = mysql_query($sql);
       $zeilen = mysql_num_rows($result);
      //zuruecksetzen falls nicht exakt ein Eintrag vorhanden ist
      if ($zeilen != 1) {
       $this->redirected('?DBProb');
      }
      //sonst session setzen
      else {
       $this->storeauth();
      } 
     } 
     //setzt session variablen
     public function storeauth()
     {
      session_start();
       $_SESSION['nick'] = $nick;
       $_SESSION['pw'] = $pw;
       $hashkey = md5($this->hashkey . $nick . $password);
       $_SESSION['login_hash'] = $hashkey;
       header( 'Location: news.php');
     }
      private function get($name) {
      if (isset($_SESSION[$name])) {
        return $_SESSION[$name];
      } else {
        return false;
      }
     }
     //ueberprueft einen besteheden login
     private function confirmauth() {
      $nick = $this->get('nick');
      $pw = $this->get('pw');
      $hashkey = $this->get('login_hash');
       if (md5($this->hashkey . $nick . $password) != $hashkey) {
        $this->logout();
       }
     }
     public function logout() {
      unset($_SESSION['pw']);
      unset($_SESSION['login_hash']);
      $_SESSION['loggedIn'] = false;
      $this->redirected();
     } 
     private function redirected($fehler) 
     { 
      header('Location: login2.php' . $fehler); 
      exit (); 
     }
    }
    ?>
    doch wenn ich mich einloggen will wird immer '?fehler=notset' an die URL angehängt(was bedeuten soll das die $_POST variablen, die ich in der Funktion login() in auth, nicht gesetzt sind. Ich weiß nicht warum, vlt hab ich ja nur was übersehn?!
    Bitte hlft mir
    mfg


  • #2
    POST ist auch nicht in der Klasse verfügbar.
    Du kannst versuchen POST als Globale zu setzen oder du übergibst die POST Werte aus dem Script an die Klasse.

    guckst du da:
    http://forum.developers-guide.net/showthread.php?t=54
    oder da:
    http://www.phpfriend.de/forum/ftopic50183.html

    Kommentar


    • #3
      warum ist post nicht verfüg bar?
      wie kann ich post als globale setzten?

      Kommentar


      • #4
        $_POST ist superglobal, sprich: überall erreichbar; auch in Klassen.
        Das ist sicher nicht der Fehler.

        Was sagt print_r($_POST); ?

        Kommentar


        • #5
          ich hab nicht ganz durchgeblickt,
          aber das header in deiner redirected funktion wird schon mal nicht gehen weil du vorher schon html ausgibst

          bzw. ich sehe grade die anderen header auch... vielleicht ist das schon das Problem

          MfG,
          Tim
          Typo3 Suchmaschinenoptimierung <- alles Rund um SEO mit Typo3

          Kommentar


          • #6
            Zitat von Bruchpilot
            $_POST ist superglobal, sprich: überall erreichbar; auch in Klassen.
            Das ist sicher nicht der Fehler.

            Was sagt print_r($_POST); ?
            Hmm, ups. da hab ich mich wohl vertan. Sorry
            War eigentlich der Meinung dass POST und GET nicht superglobal sind. Egal

            Kommentar


            • #7
              ähm das mit dem header ging aber schon. ich hatte das die klasse erst in einem anderen script das quasi als vermittler zwischen den beiden seiten stand und da ging alles.
              wie meinst du das mit hml ausfgeben?

              Kommentar


              • #8
                Testest du auf nem Windows-Rechner? Auf Windows-Rechnern hat man nämlich das Header problem nicht. Wenn du dein Script aber auf Linux spielst, wird garnichts mehr funktionieren

                Kommentar


                • #9
                  was mir gerade noch aufgefallen ist:

                  in der methode private function login() setzt du z.b. $nick= ($_POST['nick']);

                  worauf du dann versuchtst in public function storeauth() die sessionvariable zu setzen $_SESSION['nick'] = $nick;

                  das kann nicht funktionieren - es sind verschiedene namensräume!

                  Kommentar


                  • #10
                    wie kann ich das mit den namensräumen beheben?

                    Kommentar


                    • #11
                      ich hab nen windows rechner

                      Kommentar


                      • #12
                        $this->nick .....

                        Kommentar


                        • #13
                          Zitat von duderino
                          Testest du auf nem Windows-Rechner? Auf Windows-Rechnern hat man nämlich das Header problem nicht. Wenn du dein Script aber auf Linux spielst, wird garnichts mehr funktionieren
                          Wie kommst Du denn darauf?

                          Kommentar


                          • #14
                            Ich würde das mal nicht verallgemeinern, aber hier gab es schon oft Meldungen, wonach das Setzen von Headern auf dem lokalen Testrechner noch funktioniert hat, auf den Remote-Rechner dann nicht mehr.

                            Es sind vermutlich die Ausgabe-Pufferung anders eingestellt, weswegen es lokal öfter zu funktionieren scheint.

                            Ob das einfach an einer anderen Default-Konfiguration des Windows-XAMPP(lite) oder an was anderem liegt, würde ich mal offen lassen.
                            **********************************
                            Nein, ich bin nicht die Signatur.
                            Ich putze hier nur.
                            **********************************

                            Kommentar


                            • #15
                              ok thx mein prob mit post ist gelöst, es lag wirklich an den headers.
                              aber ich hab jetz n neues Prob:
                              ich will ja einen Bereich sichern und nicht nur eine Seite.aber wenn ich das script bei einer anderen seite einbinde und dann auf de link klick werd ich zurück zu meinem anmeldeformular gesetzt. liegt das am skript oder muss ich da noch ne Session-ID setzen? wenn ja könntet ihr mir dann gleich noch sagen wie ich das machrn muss?
                              mfg 250

                              Kommentar

                              Lädt...
                              X