PHP-Problem

EraZeR

Reisender
Also,
da ich mich in meiner Freizeit auch mit PHP beschäftige und ich in letzter Zeit ziemlich eingerostet bin habe ich mein Buch wieder hervorgeholt und da sollte man folgendes Script schreiben:
PHP:
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Eingaben-Ausgaben-Rechner</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="phpkid.css">
</head>
<body>
<h2>Einnahmen-Ausgaben-Rechnung</h2>
<form action="rechner.php" action="post">
<p>Einnahmen:<input type="text" name="a"><br>
Ausgaben:<input type="text" name="b"><br>
<input type="submit" value="Los">
</form>
<?php
$c = $_POST['a'] - $_POST['b'];
echo "<p>Das Ergebnis ist $c</p>\n";
?>
</body>
</html>
Doch wenn ich das Script im Browser lade und die Eingabefelder ein paar Werte eingebe und auf los klicke bekomme ich kein Ergebnis:cry:
Woran liegt das?(Ich hoffe hier kennt sich jemand mit PHP aus)

mfg

EraZeR
 
Der form-Tag stimmt nicht, es muss method="post" heißen. Außerdem fehlt dir die öffnende spitze Klammer beim Doctype...

Und zum Rest sag ich lieber nix... :roll:
 
  • Like
Reaktionen: EraZeR
Oh!
Ähm...
Peinlich:oops:....
die spitzen klammern beim doctype-Tag kann man weglassen;)
und dass dieses Script billig ist und viel zu einfach für einen wahren Gott wie dich brauchst du mir nicht erzählen, das weiß ich selbst

mfg

EraZeR
 
Zuletzt bearbeitet:
ähm hab schon wieder n problem:oops:
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Hier Titel eintragen</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="phpkid.css">
</head>
<body>
<div style="width: 600px">
<h1>Einfaches G&auml;stebuch</h1>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
Dein Kommentar:<br>
<textarea cols="55" rows="7" name="comment">
</textarea><br>
Dein Name:<br>
<input type="text" name="name"><br>
Deine E-mail-Adresse:<br>
<input type="text" name="email">
<input type="submit" value"Eintragen">
<h3>Bisherige Meinugen</h3>
<?php
//Dateiname in Var speichern
$datei = "comment.txt";
//überprüfe var E-mail und Name
if (!empty($_POST['comment']) && !empty($_POST['email']) && !empty($_POST['name'])) {
$comment = $_POST['comment'];
$name = $_POST['name'];
$email = $_POST['email'];
//Datein wird im Lese-Schreib Modus geladen
$fp fopen($datei, "a+");
//E-mail Link erstellen
$email = "<a href='mailto:$mail'>$email</a>";
//Datumsstempel erstellen
$datum = date("j.n.Y");
//HTML-Code entfernen
$comment = htmlspecialchars($comment);
$comment = stripslashes($comment);
$comment = nl2br($comment);
//Comment zusammensetzen
$meinung="<p><b>$name</b> ($email) schrieb am " . "<i>$datum</i>:<br>$comment</p>\n";
//neue Meinung in Datei schreiben
fputs($fp, "$meinung");
//Datei schließen
fclose($fp);
} 
readfile($datei);
?>
</div>
</body>
</html>
Wenn ich das Starte spuckt PHP folgenden Fehlermeldung aus:
Parse error: parse error, unexpected T_STRING in C:\xampp\htdocs\guestbook.php on line 30.
 
schon wieder ein Problem
peinlich...:oops:
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Adiminstrationsbereich</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="phpkid.css">
</head>
<body>
</form>
<?php
//Abfragen ob der User zufällig auf die Seite gekommen ist
if (!empty($_POST['login'])) {
include ("zugriff.inc.php"); //Einbinden der Zugangsdaten wenn der User von login.php kommt
//Datenbank abfrage
$sql1 = "SELECT * FROM user"; 
$result = mysql_query($sql1);
$row = mysql_fetch_assoc($result);
}
//Prüfen ob Passwort richtig
if ($_POST['pass'] == $row['Passwort'] && $_POST['user'] == $row['Name']) {
echo <<<Formular
<h1>Admin-Bereich</h1>
Hallo <b>{$row["Name"]}</b>, bitte nim deinen Eintrag vor!
<form action="admin.php" method="POST">
<b>Headline</b>: <input type="text" name="Headline" size="50"><br>
<b>Text</b> (<smal> HTML möglich</smal>):<br>
<textarea cols="65" rows="15" wrap="soft" name="Eintrag">
</textarea><br>
<input type="hidden" name="Name" value="{$_row['Name']}">
<input type="submit" value="Eintragen">
</form>
Formular;
} else {
    echo "Leider sind deine Eingaben nicht richtig! Überprüfe deine Eingabe!";
}
//Daten in Datenbank eintragen
if (!empty($_POST['Headline']) && !empty($_POST['Eintrag'])) {
        include ("zugriff.inc.php");
       $datum = date("d.m.Y , H:i");
       $sql = "INSERT INTO cms" . "(id, Name, Headline, Datum, Eintrag)". "VALUES ('', '$_POST[Name]', '$_POST[Headline]', " .
                  "'$datum', '$_POST[Eintrag]')";
       mysql_query($sql);
       echo "<h3>[ <a href='index.php'>Ausloggen</a> ]</h3>";
}
?>
</body>
</html>
Das Script soll die Daten aus den Eingabefeldern in DB speichern.
Aber wenn ich auf den Button Eintragen klicke erscheint zwar der Link aber die Daten wurden nicht in die DB eingetragen! Und ne Fehlermeldung gibts auch nicht!
 
Wenn keine Fehlermeldung kommt lass dir halt eine ausgeben... (Stichwort: mysql_error)

Mal abgesehen davon, wenn du zwei oder mehr Benutzer in der Datenbank hast kann sich so wie ich das sehe nur der erste einloggen...
 
  • Like
Reaktionen: EraZeR
Das sich nur ein User anmelden kann ist mir auch aufgefallen.
Zum Fehler:
Anscheinend war die Anweisung fehlerhaft.
PHP:
$sql = INSERT INTO cms usw;
Inzwischen hab ich das Problem behoben und ein neues bekommen:lol::
der code sieht jetzt so aus:
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Adiminstrationsbereich</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="phpkid.css">
</head>
<body style="background-image: url('bgyellow.gif')">
<?php
//Abfragen ob der User zufällig auf die Seite gekommen ist
if (!empty($_POST['login'])) {
include ("zugriff.inc.php"); //Einbinden der Zugangsdaten wenn der User von login.php kommt
//Datenbank abfrage
$sql1 = "SELECT * FROM user"; 
$result = mysql_query($sql1);
$passwort == false;
while ($row = mysql_fetch_assoc($result)) {
       if ($row['Name'] == $_POST['user'] && $row['Passwort'] == $_POST['pass']) {
       $passwort == true;
         break;
       } 
}
//Prüfen ob Passwort richtig
if ($passwort == true) {
echo <<<Formular
<h1>Admin-Bereich</h1>
Hallo <b>{$row["Name"]}</b>, bitte nim deinen Eintrag vor!
<form action="admin.php" method="POST">
<b>Headline</b>: <input type="text" name="Headline" size="50" value="{$_POST['Headline']}"><br>
<b>Text</b> (<smal> HTML möglich</smal>):<br>
<textarea cols="65" rows="15" wrap="soft" name="Eintrag" value="{$_POST['Eintrag']}">
</textarea><br>
<input type="hidden" name="Name" value="{$_row['Name']}">
<input type="submit" value="Eintragen">
</form>
Formular;
}
//Daten in Datenbank eintragen
if (!empty($_POST['Headline']) && !empty($_POST['Eintrag'])) {
        include ("zugriff.inc.php");
       $datum = date("d.m.Y , H:i");
       $sql = "INSERT INTO cms  VALUES ('', '$_POST[Name]', '$_POST[Headline]',  '$datum', '$_POST[Eintrag]')";
       if (mysql_query($sql)) {
       echo "Eintragung erfolgreich!";
       echo "<h3>[ <a href='index.php'>Ausloggen</a> ]</h3>";
} else {
        echo "Eintragung fehlgeschlagen!";
        
}
}
?>
</body>
</html>
Und die Fehlermeldung so:
Parse error: parse error, unexpected $ in C:\xampp\htdocs\cms\admin.php on line 53

Der Fehlermeldung nach scheint igrendwo ein überflüssiges $ zu sein
Nur leider finde ich kein überflüssiges $:cry:
 
ich kann zwar kein php, aber wie soll ein fehler in zeile 53 sein wenn das ding nur 52 zeilen hat?
 
PHP:
$passwort == false;
Ist vermutlich nicht was du willst.

Du musst dir nicht alle Benutzer aus der Datenbank holen und dann gucken ob es einen passenden gibt. Mach einfach ein "SELECT Name, Passwort FROM user WHERE Name = '$_POST[user]'", wenn was zurück kommt hast du den richtigen Benutzer, sonst gibt es ihn nicht. Denk auf alle Fälle dran, den Userinput nicht ungesäubert in die Datenbank zu schreiben, sonst kann man einfach SQL-Injection betreiben.

Außerdem fehlt dir, soweit man das bei deiner merkwürdigen Einrückung erkennen kann, eine geschlossene geschweifte Klammer...
 
  • Like
Reaktionen: EraZeR
Muss es nicht statt "include" <<>> "require" heissen, damit der Inhalt der dazu geladenen Datei ausgeführt wird?

Auuserdem fehlt eine } zum schliessen des if Anweisungsblocks
 
Nein, include ist schon richtig. Unterschied zwischen include() und require() ist AFAIK dass include() im Fehlerfall ein Warning schmeißt, während require() einen fatal Error raushaut.
 
  • Like
Reaktionen: EraZeR