Login  Regeln Aktuelles Datum und Uhrzeit: 05.09.2008, 21:27  
Startseite
Registrieren
Profil
Suchen
Mitgliederliste
Verzeichnis
Impressum



Partner
kostenlose Homepage
Fussball
Kostenloses Forum
SMS kostenlos
Webhosting
Webmasterportal
Kostenlos
Kredit ohne Schufa
Esoterik-Forum
Selbsthilfeforum
Artikel Backlink
Datenrettung
skript funktioniert nicht richtig ... fehler???

 
Neues Thema eröffnen   Neue Antwort erstellen    Webmaster Forum -> Serverseitige Websprachen
Vorheriges Thema anzeigen Nächstes Thema anzeigen 
Autor Nachricht
Hannibal-
Stammuser [User]
Stammuser



Anmeldung: 14.02.05
Beiträge: 20

BeitragVerfasst am: 15.02.2005, 13:19    Titel: skript funktioniert nicht richtig ... fehler??? Antworten mit Zitat

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. Winken


<?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
Private Nachricht senden
JörgK
Beliebter [Mod]
Beliebter



Anmeldung: 09.04.04
Beiträge: 376

BeitragVerfasst am: 15.02.2005, 14:16    Titel: Antworten mit Zitat

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
Private Nachricht senden Website dieses Benutzers besuchen
Beamer
Stammuser [User]
Stammuser



Anmeldung: 28.11.04
Beiträge: 49

BeitragVerfasst am: 15.02.2005, 14:53    Titel: Antworten mit Zitat

Zitat:
mysql_query($sql, $link);
$meldung="<h2><font color=red>Ihre Angaben wurden aufgenommen.</font></h2>";


LOL

So eine Kristallkugel will ich auch haben Smilie

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
Private Nachricht senden
Hannibal-
Stammuser [User]
Stammuser



Anmeldung: 14.02.05
Beiträge: 20

BeitragVerfasst am: 15.02.2005, 15:10    Titel: Antworten mit Zitat

ja, ich hab die entsprechenden werte schon eingegeben ... so blöd bin ich nun auch wieder nicht ... Geschockt 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
Private Nachricht senden
JörgK
Beliebter [Mod]
Beliebter



Anmeldung: 09.04.04
Beiträge: 376

BeitragVerfasst am: 15.02.2005, 16:29    Titel: Antworten mit Zitat

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:

Code:

mysql_error();

_________________
Webnotizen - Forum für XHTML, CSS und SEO - Bookmarks


Nach oben
Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

Gehe zu:  

Ähnliche Beiträge
Thema Autor Forum Antworten Verfasst am
Keine neuen Beiträge PHP Counter funktioniert nicht bitte ... xxcool25xx Serverseitige Websprachen 14 27.08.2008, 07:11 Letzten Beitrag anzeigen
Keine neuen Beiträge Coppermine Gallery nicht als Iframe e... bildt HTML & CSS 1 20.08.2008, 12:02 Letzten Beitrag anzeigen
Keine neuen Beiträge .htaccess und .htpasswd funktionieren... xxcool25xx Serverseitige Websprachen 3 13.08.2008, 22:03 Letzten Beitrag anzeigen
Keine neuen Beiträge Fehler in den PHP Bereich warscheinli... crazystep Serverseitige Websprachen 3 17.07.2008, 21:50 Letzten Beitrag anzeigen
Keine neuen Beiträge Zufall in php...ich seh nicht durch... Malli Serverseitige Websprachen 4 14.07.2008, 03:36 Letzten Beitrag anzeigen
Threadübersicht