[PHP/MySQL] unexpected T_STRING und in anderer Datei leere Seite

kingpomm

Well-known member
ID: 213865
L
29 April 2006
699
28
Hallo.

Da ich nicht son Profi bin was HTML angeht, frage ich euch mal.

Also ich habe ein kleines Login-Script genommen von dieser Seite: klick hier

Nun habe ich es so gemacht, wie auf der Seite beschrieben - nur habe ich keine neue Datenbank angelegt sondern einfach die Tabellen in eine vorhandene Datenbank reingemacht und das Script angepasst.

--- Problem 1 ---

Nur jetzt will ich mich registrieren, dann kommt folgende Fehlermeldung:
Parse error: syntax error, unexpected T_STRING in /srv/www/.../registrieren.php on line 23

Quelltext von registrieren.php:
PHP:
<?
$db_server = 'das';
$db_name = 'ist';
$db_user = 'richtig';
$db_passwort = 'eingetragen';
@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('phost16884','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("phost16884",'INSERT INTO teilnehmer
           (user, nachname, vorname, email) VALUES
           ("'.$_POST['kennung'].'","'.$_POST['$nachname'].'","'.
               $_POST['$vorname'].'","'.$_POST['$email'].'")');
   $login = mysql_db_query("phost16884",'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>');
   }
  }
 }

?>


--- Problem 2 ---

Wenn ich mich einloggen will, kommt einfach eine leere Seite. PHP include funktioniert demzufolge dann auch nicht.

Quelltext von einloggen.php:
PHP:
<?
$db_server = "das";
$db_name = "ist";
$db_user = "auch";
$db_passwort = "eingetragen";
@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("phost16884",'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;
}
?>


--
Danke für alle Antworten.

MfG kingpomm
 
Zu Problem 1:

$_POST schreibt man zusammen (Zeile, in der das auftritt, steht ja in der Fehlermeldung).

Ah cool. Das hatte ich schonmal gemacht aber hab grad gesehen, dass daunter noch ein POST stand. Danke.

So erstes Problem wäre gelöst. Ich guck mir das zweite auch an aber könnt mir ja bisschen helfen, guck hier öfter mal vorbei.
 
einloggen.php

Da dies mit einem "=" immer TRUE ist, beendet dein exit in dieser if-Abfrage das gesammte Script!
OK habe ich gemacht, zumindest wird jetzt schon das Login-Formular angezeigt, obs funktioniert guck ich nachher. Bei der Registration waren noch paar Fehler drinne, da wollte das Script in nicht vorhandene Spalten schreiben, das habe ich geändert (hoffe doch richtig). Jetzt wird mir nach der Registration eine leere Seite angezeigt, inder eine Meldung kommt "Ihre Daten konnten nicht übernommen werden".

Hier mal der aktuelle Quelltext der registrieren.php:
PHP:
<?
$db_server = 'ist';
$db_name = 'immernoch';
$db_user = 'alles';
$db_passwort = 'eingetragen';
@mysql_connect($db_server,$db_user,$db_passwort);

if(!isset($_POST['sub1']) || empty($_POST['sub1']))
{
 print('<form action="" method="post">
        Name: <input type="text" name="name"><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('phost16884','SELECT username FROM teilnehmer
                                   WHERE username="'.$_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("phost16884",'INSERT INTO teilnehmer
           (username, name, vorname, email) VALUES
           ("'.$_POST['$kennung'].'","'.$_POST['$name'].'","'.
               $_POST['$vorname'].'","'.$_POST['$email'].'")');
   $login = mysql_db_query("phost16884",'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>');
   }
  }
 }

?>

/edit: Ich hatte auch oben das "mysql_select_db($db_name);" rausgenommen, weil wenn ich das richtig verstehe, macht er ja nochmal nen select vor ein paar zeilen, z.B. hier "..._db_query("phost16884",'INSERT INTO teilneh..."

Oder muss das drinne bleiben? Habe es gerade mit und ohne diese "mysql_select_db($db_name);"-Zeile getestet, gibt keinen Unterschied.