kostenloser Webspace werbefrei: lima-city


php: header() problem

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    deep-shades

    deep-shades hat kostenlosen Webspace.

    Hallo,

    ich habe vor längerer Zeit ein kleines login script geschrieben. Dieses gab zur Weriterleitung meta daten aus, dies wollte ich nun mit der header() funktion anders lösen, doch leider funktioniert das ganze nicht.

    Ich steh grad n bischen auf n Schlauch hoffe ihr könnt mir Helfen :wave:

    <?php
    session_start();
    																												
    $username = $_POST['username'];
    $password = $_POST['password'];
    
    if ($username&&$password)
    {
      
    $connect = mysql_connect("...","...","...");
    mysql_select_db("...");
      
      
    $query = mysql_query("SELECT * From users WHERE username='$username'");
    
    $numrows = mysql_num_rows($query);
    
    if ($numrows!=0)
    {
      
      $username = htmlentities($username);
      $password = htmlentities($password);
      
      
      while ($row = mysql_fetch_assoc($query))
      {
        $dbusername = $row['username'];
        $dbpassword = $row['password'];
      }
      
      if ($username==$dbusername&&md5($password)==$dbpassword)
      {
        
        $_SESSION['username']=$dbusername;
    	header('Location: http://deep-shades.de/design3/member.php');
        
      }
      else
        header('Location: http://deep-shades.de/design3/login.php?status=wrongpasswd&&user=$username');
        
    }
    else
    	header('Location: http://deep-shades.de/design3/login.php?status=userdosntexist');
      
    }
    else
    	header('Location: http://deep-shades.de/design3/login.php?status=userandpasswd&&user=$username');
    	
    ?>
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Mal ganz davon abgesehen, dass nach dem letzten else eine abschließende Klammer fehlt, ist das Ganze sehr suboptimal bis unsicher gelöst.
  4. Autor dieses Themas

    deep-shades

    deep-shades hat kostenlosen Webspace.

    erstmal danke für die schnelle Antwort,

    ich fühl mich gerade echt n bischen dämlich :biggrin: ,
    wo fehlt denn da ne Klammer?

    ja ich weiß, das ich mich mit dem thema Sicherheit noch mehr beschäftigen muss
  5. Wenn du php5 hast schreibe mysqli für mysql ist sicherer und schneller .... und wenn du dich mit der Datenbank verbindest sollte auch noch ein or die hin...

    $connect = mysqli_connect("...","...","...")
    or die('Error connecting to MySQL server.');
  6. Autor dieses Themas

    deep-shades

    deep-shades hat kostenlosen Webspace.

    jup danke ,

    normalerweise binde ich mit include() eine .php datei ein wo hinten dran auch or die steht. Dies habe ich jetzt nur zwecks fehler analyse raus genommen.

    Das mit mysqli werde ich ausprobieren sobalt FTP wieder funktioniert.

    mein eigentliches Problem besteht jedoch immer noch
  7. Du solltest VOR dem Absetzen der Abfrage an die DB die übergebenen Daten escapen (mysql_real_escape_string), um die Möglichkeit von SQL-Injection zu unterbinden. Außerdem erscheint mir die Verschachtelung misslungen zu sein, es sein denn, Du willst wirklich nur den letzten gefundenen Datensatz untersuchen, in dem Fall solltest Du aber sortieren. Und was genau funktioniert nicht, bekommst Du eine Fehlermeldung?
  8. Autor dieses Themas

    deep-shades

    deep-shades hat kostenlosen Webspace.

    ja wie gesagt mit dem thema Sicherheit muss ich mich noch mehr beschäftigen. aber danke für die Hinweise.

    Die weiterleitung Funktioniert nicht, fehlermeldung bekomme ich keine.
  9. Wie soll denn etwas wie
    header('Location: http://deep-shades.de/design3/login.php?status=wrongpasswd&&user=$username');
    oder
    header('Location: http://deep-shades.de/design3/login.php?status=userandpasswd&&user=$username');
    funktionieren?
  10. Autor dieses Themas

    deep-shades

    deep-shades hat kostenlosen Webspace.

    du meinst das mitgeben von Variablen (GET) ?

    Ich habe das vorher extern getestet und es funktioniert und selbst wenn nicht müsste ja zumindestens die Weiterleitung bei erfolgreicher Anmeldung funktionieren.
    weil da wird so weitergeleitet
    header('Location: http://deep-shades.de/design3/member.php');


    Beitrag zuletzt geändert: 8.4.2011 20:33:17 von deep-shades
  11. Ich bin noch etwas zu müde dafür, aber so ungefähr würde ich es machen:

    <?php
    session_start();
    																												
    $username = $_REQUEST['username'];
    $password = $_REQUEST['password'];
    
    if (!empty($username) && !empty($password)) {
    
    $connect = @mysql_connect ("...", "...", "...") or die ('Die Verbindung zum Datenbankserver konnte nicht hergestellt werden: <br /><br />'.mysql_error());
    @mysql_select_db("...") or die ('Die Datenbank konnte nicht verwendet werden: <br /><br />'.mysql_error());
    	
    	$query = ("SELECT username, password FROM users WHERE username='".mysql_real_escape_string($username)."' AND password = '".$password."'");
    	$result = @mysql_query($query) or die ('Der Query konnte nicht ausgef&uuml;hrt werden: <br /><br />'.mysql_error());
    
    	if (mysql_num_rows ($result) > 0) {
    		$data = mysql_fetch_array($result);
    		
    		$_SESSION['username'] = $data['username'];		
    		header('Location: member.php'); 
    	}
    	else {
    		header('Location: login.php?status=userdosntexist&username='.urlencode($username));
    	}
    }
    else {
    	header('Location: login.php?status=userandpasswd');
    }
    ?>
  12. Autor dieses Themas

    deep-shades

    deep-shades hat kostenlosen Webspace.

    schöner Ansatz und danke für die ganze Hilfe .

    und zu meinem eigentlichen Problem, wo ja leider kein lösungs Vorschlag kam. ein exit; hinter jedem header() hatt das Problem gelöst.
  13. Das unterdrückt den Fehler vielleicht, lösen tut es das aber nicht.
  14. Autor dieses Themas

    deep-shades

    deep-shades hat kostenlosen Webspace.

    mhh ok , ich hab dein Script gerade mal lokal getestet

    Fehler: Umleitungsfehler

    Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.


    EDIT: erstmal Wochenende jetzt :wave:

    Beitrag zuletzt geändert: 9.4.2011 12:41:30 von deep-shades
  15. deep-shades schrieb:
    du meinst das mitgeben von Variablen (GET) ?
    In einfachen Anführungszeichen wird nicht der Variableninhalt, sondern der Variablenname übergeben.

    $name = 'Tom';
    echo 'Hallo $name';
    gibt aus: Hallo $name

    $name = 'Tom';
    echo "Hallo $name";
    gibt aus: Hallo Tom

    am Besten aber so:
    $name = 'Tom';
    echo 'Hallo '.$name;
    gibt aus: Hallo Tom

    Der Punkt verkettet Zeichenketten, Zahlen, Funktionsrückgaben, Variablen, usw.


    deep-shades schrieb:
    mhh ok , ich hab dein Script gerade mal lokal getestet

    Fehler: Umleitungsfehler

    Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.
    Dann leitest du auf die Seite um, die weiterleitet, oder auf eine andere Seite, die immer wieder auf sich umleitet.

    Beitrag zuletzt geändert: 9.4.2011 13:06:01 von drafed-map
  16. Schlauerweise solltest du das o.g. Script nicht login.php nennen :wall: Und falls doch, entferne den letzten Header und pack stattdessen dein Formular da rein.

    Beitrag zuletzt geändert: 9.4.2011 13:39:38 von fabo
  17. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!