Tino: Login und registrierskript

Hallo Ich habe 2 kleine Probleme, beim Login geht alles, bis auf die Rückleitung, denke das da ein metha fehlt aber komme selber nicht drauf wo das eingepflanzt werden muss, und beim registrieren will es mir das ganze nicht in die Datenbank schreiben. Ich danke schon jetzt für die Hilfe.

Login Script.

<?  
$db_server = "192.168.1.190";  
$db_name = "nutzer";  
$db_user = "root";  
$db_passwort = "b2id9t";  
@mysql_connect($db_server,$db_user,$db_passwort);  
mysql_select_db($db_name);  
  
$user = '';  
$pass = '';  
if(isset($_COOKIE['username'])){$user = $_COOKIE['username'];}  
if(isset($_COOKIE['passwort'])){$pass = $_COOKIE['passwort'];}  
if(isset($_POST['username'])){$user = $_POST['username'];}  
if(isset($_POST['passwort'])){$pass = $_POST['passwort'];}  
  
if($user != '')  
{  
 $pruefung = mysql_db_query("nutzer",'SELECT passwort FROM login  
             WHERE username="'.$user.'"');  
 $ausgabe = mysql_fetch_row($pruefung);  
 if($pass != $ausgabe[0])  
 {  
  echo '<p>Username und Passwort stimmen nicht überein.</p>';  
  $user = '';  
 }  
 else  
 {  
  setcookie("username", $user, time()+3600);  
  setcookie("passwort", $pass, time()+3600);  
 }  
}  
if($user = '')  
{  
 print('<form action="login.php" method="post">  
         Login: <input type="text" name="username"><br>  
         Passwort: <input type="password" name="passwort"><br><br>  
         <input type="submit" name="sub1" value="LOGIN">  
        </form>');  
 exit;  
}  
?>

Registrationsdatei direkt eingebungen in der seite.

<div id="center">  
<!--  
[code lang=php]<?  
$db_server = '192.168.1.190';  
$db_name = 'nutzer';  
$db_user = 'root';  
$db_passwort = 'b2id9t';  
@mysql_connect($db_server,$db_user,$db_passwort);  
mysql_select_db($db_name);  
  
if(!isset($_POST['sub1']) || empty($_POST['sub1']))  
{  
 print('  
 //-->  
 <form action="" method="post">  
        Name: <input type="text" name="nachname"><br>  
        Vorname: <input type="text" name="vorname"><br>  
        E-Mail: <input type="text" name="email"><br>  
        Loginname: <input type="text" name="kennung"><br>  
        Paßwort: <input type="password" name="passwort"><br><br>  
        <input type="submit" name="sub1" value="LOGIN">  
        </form>  
<!--  
		');  
}  
else if($_POST['sub1'] == 'LOGIN')  
{  
 $check = mysql_db_query('nutzer','SELECT user FROM teilnehmer  
                                   WHERE user="'.$_ POST['kennung'].'"');  
 $anzeige = mysql_fetch_row($check);  
 if($anzeige[0] == $_ POST['kennung'])  
 {  
  print('<script language="Javascript">  
          alert("Die eingegebene Kennung ist bereits vorhanden");  
         </script>');  
 }  
 else  
 {  
  if(!empty($_POST['passwort']) && !empty($_POST['login']))  
  {  
   print('<script language="Javascript">  
           alert("Ihre Daten wurden übernommen");  
          </script>');  
   $pers = mysql_db_query("nutzer",'INSERT INTO teilnehmer  
           (user, nachname, vorname, email) VALUES  
           ("'.$_POST['kennung'].'","'.$_POST['$nachname'].'","'.  
               $_POST['$vorname'].'","'.$_POST['$email'].'")');  
   $login = mysql_db_query("nutzer",'INSERT INTO login  
           (username, passwort, registrierung) VALUES  
           ("'.$_POST['kennung'].'","'.$_POST['passwort'].'",NOW())');  
   }  
   else  
   {  
    print('<script language="Javascript">  
           alert("Ihre Daten konnten nicht übernommen werden");  
          </script>');  
   }  
  }  
 }  
}  
?>

-->

			</div>	[/code]  

Ich danke euch

  1. 'ǝɯɐu$ ıɥ

    <?

    $db_server = "192.168.1.190";
    $db_name = "nutzer";
    $db_user = "root";
    $db_passwort = "b2id9t";

    ?>

      
      
    Bist du dir sicher das du das hier so posten willst????????  
      
    ssnɹƃ  
    ʍopɐɥs
    
    -- 
    Professionals built the Titanic, amateurs built the ark.
    
    1. Hallo Shadowcrow,

      Bist du dir sicher das du das hier so posten willst????????

      Da die IP eine lokale IP ist, kann man von außen ohnehin nicht darauf zugreifen - aber sinnvoll ist es nicht unbedingt ...

      Gruß,
      Tobias

    2. Hello,

      <?

      $db_server = "192.168.1.190";
      $db_name = "nutzer";
      $db_user = "root";
      $db_passwort = "b2id9t";

      ?>

      
      >   
      >   
      > Bist du dir sicher das du das hier so posten willst????????  
        
      Nächstes Mal kann er ja dazuschreiben: "Nach Diktat geändert!"  
        
        
        
        
        
        
      \*scnr\*  
      Liebe Grüße aus dem schönen Oberharz  
        
        
      Tom vom Berg  
      ![](http://selfhtml.bitworks.de/Virencheck.gif)  
        
      
      -- 
       ☻\_  
      /▌  
      / \ Nur selber lernen macht schlau  
      <http://bergpost.annerschbarrich.de>
      
  2. Hallo Tino,

    Ich habe 2 kleine Probleme, beim Login geht alles, bis auf die Rückleitung, denke das da ein metha fehlt aber komme selber nicht drauf wo das eingepflanzt werden muss,

    Was meinst du mit "Rückleitung"? Im Code steht keine Weiterleitung o.ä.. Und was ist ein »metha«? Und wo willst du das "ein[…]pflanz[en]"?

    und beim registrieren will es mir das ganze nicht in die Datenbank schreiben.

    Definiere "will nicht". Fehlermeldung? Verhalten soll/ist?

    @mysql_connect($db_server,$db_user,$db_passwort);

    von der nicht vorhandenen bzw. (wie hier) mangelhaften Fehlerbehandlung (nein, das Unterdrücken von Fehlern ist nicht sinnvoll) sei im Folgenden mal abgesehen ...

    $pruefung = mysql_db_query("nutzer",'SELECT passwort FROM login
                 WHERE username="'.$user.'"');

    Die Funktion mysql_db_query() ist bereits seit PHP 4.0.6(!) - also seit 10(!) Jahren - veraltet. Ersetze sie durch mysql_select_db() und mysql_query(), erstere kennst du ja schon. Außerdem darfst du niemals und unter keinen Umständen Daten die von außen kommen ungeprüft bzw. nicht entschärft in einen Query einbauen, siehe auch http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel. Bei allen weiteren Querys gilt das natürlich genauso.

    setcookie("username", $user, time()+3600);
      setcookie("passwort", $pass, time()+3600);

    Die Zugangsdaten in einem Cookie zu speichern ist keine gute Idee: zum einen werden die Daten dann bei jedem Request unverschlüsselt zum Server geschickt und zum anderen musst du dann bei jedem Request prüfen ob die Zugangsdaten gültig sind. Besser wäre es dem User eine Session zu verpassen und in dieser dann zu speichern wenn er eingeloggt ist.

    <div id="center">
    <!--

    Wofür ist der Kommentar? Damit kommentierst du Fehler- und Erfolgsmeldungen die weiter unten ausgegeben werden aus.

    $check = mysql_db_query('nutzer','SELECT user FROM teilnehmer
                                       WHERE user="'.$_ POST['kennung'].'"');

    Neben dem oben geschriebenen: zwischen »$_« und »POST« ist ein Leerzeichen zu viel.

    if($anzeige[0] == $_ POST['kennung'])

    dito.

    print('<script language="Javascript">
              alert("Die eingegebene Kennung ist bereits vorhanden");
             </script>');

    Warum gibst du Fehlermeldungen nicht ganz normal als Text aus sondern per Javascript (mit fehlendem type-Attribut)? User Ohne Javascript bekommt der User nur eine leere Seite vorgesetzt ...

    print('<script language="Javascript">
               alert("Ihre Daten wurden übernommen");

    Zu diesem Zeitpunkt kannst du noch garnicht wissen, ob die Daten korrekt gespeichert wurden.

    $pers = mysql_db_query("nutzer",'INSERT INTO teilnehmer
               (user, nachname, vorname, email) VALUES
               ("'.$_POST['kennung'].'","'.$_POST['$nachname'].'","'.
                   $_POST['$vorname'].'","'.$_POST['$email'].'")');

    Hier ist zuviel Geld (genauer: Dollar) im Spiel ...

    }
      }
    }
    }

    Du solltest dir angewöhnen weiter einzurücken. Ein Leerzeichen pro Ebene ist etwas wenig um den Überblick zu behalten.

    Gruß,
    Tobias

    1. Ich danke dir, habe das ganze verworfen und werde nochmals neu anfangen ist wohl besser und noch mal ein bisschen neue Bücher lesen, mein PHP ist nicht mehr das neuste merke ich.