|
 |
|
| Autor |
Nachricht |
Hannibal- Stammuser [User]

Anmeldung: 14.02.05 Beiträge: 20
|
Verfasst am: 15.02.2005, 13:19 Titel: skript funktioniert nicht richtig ... fehler??? |
|
|
ich habe aus einem php-buch folgendes skript eins zu eins übernommen und auf meinen server gespielt, nachdem ich den vorgaben entsprechend eine tabelle in meiner datenbank angelegt hatte. dann hab ich das skript ausgeführt. die darstellung war einwandfrei, doch leider kam nach klicken des sende-buttons weder eine fehler- noch eine erfolgsmeldung, wie es - laut buch - eigentlich der fall sein müßte. was aber noch wichtiger ist: in der datenbank kamen keinerlei daten an, obwohl ich sie mit den richtigen angaben angesprochen habe. die eingaben im formular verschwanden allerdings. nun bin ich etwas ratlos, wo denn hier fehler liegen könnten ... ich wäre euch sehr dankbar, wenn einer von euch sich das mal kurz durchlesen und mir helfen könnte. ich bin php-anfänger, für euch müßte so was doch eigentlich ein klacks sein.
<?php
if($_POST[flag]==1)
{
$_POST[absender]=trim($_POST[absender]);
$_POST[betreff]=trim($_POST[betreff]);
$_POST[message]=trim($_POST[message]);
$_POST[absender]=strip_tags($_POST[absender]);
$_POST[betreff]=strip_tags($_POST[betreff]);
$_POST[message]=strip_tags($_POST[message]);
if(!$_POST[absender]){$fehler="Bitte geben Sie Ihre Absenderinformation ein.<br>";}
if(!$_POST[betreff]){$fehler="Bitte geben Sie eine Betreffinformation ein.<br>";}
if(!$_POST[message]){$fehler="Bitte geben Sie eine Nachricht ein.<br>";}
if($fehler)
{
$meldung="<h2><font color=red>".$fehler."</font></h2>";
unset($_POST[flag]);
}
else
{
$tabellenname="gastbuch";
$sql="INSERT INTO $tabellenname (absender, betreff, message, datum) values ('".$_POST[absender]."', '".$_POST[betreff]."', '".$_POST[message]."', now())";
$link = mysql_connect("localhost", "user", "paßwort");
mysql_select_db("datenbank", $link);
mysql_query($sql, $link);
$meldung="<h2><font color=red>Ihre Angaben wurden aufgenommen.</font></h2>";
}
echo $meldung;
}
if(!$_POST[flag])
{
?>
<form action="<?php echo $PHP_SELF; ?>" methode="post">
<input type="hidden" name="flag" value="1">
<p>Ihr Name:<br>
<input type="text" name="absender" value="<?php echo $_POST[absender]; ?>"></p>
<p>Betreff:<br>
<input type="text" name="betreff" value="<?php echo $_POST[betreff]; ?>"></p>
<p>Ihre Nachticht:<br>
<textarea name="message">
<?php echo $_POST[message]; ?>
</textarea>
</p>
<input type="submit" value="eintragen">
</form>
<?php
}
?>
|
|
| Nach oben |
|
 |
JörgK Beliebter [Mod]

Anmeldung: 09.04.04 Beiträge: 376
|
Verfasst am: 15.02.2005, 14:16 Titel: |
|
|
Hast du die entsprechenden Werrte angegeben, dass die Verbindung zur Datenbank aufgenommen werden kann:
| Code: |
$link = mysql_connect("localhost", "user", "paßwort");
mysql_select_db("datenbank", $link);
|
_________________
Webnotizen - Forum für XHTML, CSS und SEO - Bookmarks
|
|
| Nach oben |
|
 |
Beamer Stammuser [User]

Anmeldung: 28.11.04 Beiträge: 49
|
Verfasst am: 15.02.2005, 14:53 Titel: |
|
|
| Zitat: | mysql_query($sql, $link);
$meldung="<h2><font color=red>Ihre Angaben wurden aufgenommen.</font></h2>"; |
LOL
So eine Kristallkugel will ich auch haben
Jörg hat Dein Problem ja schon gelöst. Dazu möchte ich nur noch anmerken, dass es eine sehr schöne nächste Übung für Dich sein könnte...
1.) Das Skript um eine ordentliche Fehlerbehandlung zu ergänzen (siehe mysql_errno() etc.)
2.) Die Variablenübernahme sicher und sauber zu gestalten. So ist $_POST[absender] unsauber, $_POST['absender'] ist die empfohlene Syntax. Ein Hacker könnte durch geschickt gewählte Feldinhalte Deine Datenbank ausspionieren oder löschen. Deswegen solltest Du die Variablen unbedingt prüfen, bevor sie in den SQL-String kommen. (siehe: addslashes() etc.)
Gruß, Beamer
|
|
| Nach oben |
|
 |
Hannibal- Stammuser [User]

Anmeldung: 14.02.05 Beiträge: 20
|
Verfasst am: 15.02.2005, 15:10 Titel: |
|
|
ja, ich hab die entsprechenden werte schon eingegeben ... so blöd bin ich nun auch wieder nicht ... trotzdem passiert nix. das ist ja grade das, was mich wurmt ... muß ich das skript eventuell in einem speziellen verzeichnis auf dem webserver speichern?
@beamer: vielen dank! das wußte ich nicht. wie gesagt: ich hab die syntax eins zu eins aus dem buch übernommen. das ist ein einsteigerbuch, deshalb gehn die vermutlich auf mögliche hacker-angriffe nicht ein.
ist da sonst nirgendwo ein fehler im skript? ich hab nämlich das gefühl, wenn ich den sende-button klicke, löscht der nur den eingegebenen text, tut sonst aber gar nichts, nimmt keine verbindung mit der datenbank auf und versucht es nicht mal. und woran liegt es, daß ich keine fehlermeldung bekomme, wie das sein sollte, wenn ich ein feld leer lasse?
$_POST[absender]=trim($_POST[absender]);
$_POST[betreff]=trim($_POST[betreff]);
$_POST[message]=trim($_POST[message]);
$_POST[absender]=strip_tags($_POST[absender]);
$_POST[betreff]=strip_tags($_POST[betreff]);
$_POST[message]=strip_tags($_POST[message]);
dieser abschnitt sollte laut buch unter anderem testen, ob html-code verwendet wurde in den feldern. tut er aber nicht.
if(!$_POST[absender]){$fehler="Bitte geben Sie Ihre Absenderinformation ein.<br>";}
if(!$_POST[betreff]){$fehler="Bitte geben Sie eine Betreffinformation ein.<br>";}
if(!$_POST[message]){$fehler="Bitte geben Sie eine Nachricht ein.<br>";}
und der abschnitt sollte prüfen, ob in den feldern was drin steht und, wenn nicht, eine fehlermeldung ausgeben. tut er auch nicht.
|
|
| Nach oben |
|
 |
JörgK Beliebter [Mod]

Anmeldung: 09.04.04 Beiträge: 376
|
Verfasst am: 15.02.2005, 16:29 Titel: |
|
|
Vielleicht liegt es an den doppelten Anführungszeichen:
| Code: | | $sql="INSERT INTO $tabellenname (absender, betreff, message, datum) values ('".$_POST[absender]."', '".$_POST[betreff]."', '".$_POST[message]."', now())"; |
die SQL Abfrage wäre dementsprechend nur:
| Code: | | INSERT INTO $tabellenname (absender, betreff, message, datum) values (' |
probier's mal so:
| Code: | | $sql="INSERT INTO $tabellenname (absender, betreff, message, datum) values ('$_POST[absender]', '$_POST[betreff]', '$_POST[message]', now())"; |
ansonsten kann man sich noch testweise mit folgender Zeile MySQL Fehler ausgeben lassen:
_________________
Webnotizen - Forum für XHTML, CSS und SEO - Bookmarks
|
|
| Nach oben |
|
 |
|
|
 |
|
Alle Zeiten sind GMT + 1 Stunde
|
| Seite 1 von 1 |
|  |