Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo an alle Fachinformatiker\innen ,

Ich benötige kurz eure hilfe.

Und zwar habe ich mir ein Gästebuch erstellt.

Die Einträge werden in eine Datenbank abgelegt.

Um diese Einträge zu schreiben, habe ich ein Formular erstellt,

es ist PHP und HTML basierend aufgebaut.

Es wird angegeben:

Name:

(textbox) Max Musterman

E-mail:

(textbox) Mustermann@muster.de

url:

(textbox) http://www.Mustermann.tl.de

Eintrag:

(Textarea) Blala blubb

(Button) [speichern]

So nach dem klicken auf Speichern, wird die Abfrage gestartet, ob wirklich alle Felder Ausgefüllt wurden.... (Pflichtfelder wie Name, Eintrag und Email)

Wenn der Eintrag korreckt ist (wie oben augeschrieben) dann speichert er den Eintrag ganz normal und macht einen reset, so dass das eintrage feld wieder Leer ist, für die nächste angabe!

Falls nicht alles angegeben wurde, speichert er den eintrag nicht, und es erfolgt ein reset der Seite.

Das Problem ist nun, das die Felder wieder alle Leer sind und der Benutzter wieder alle neu eingeben müsste.

Was muss ich tun um die Einträge speichern zu lassen um dem Benutzter einfach nur darauf hinzuweisen, das er etwas vergessen hat

und nicht wieder alles neu eintippen muss?

Ich hoffe ihr könnt mir einen kleinen Tipp geben ;-)!

MfG

Warbier

Geschrieben

Sry,

das ich den Quelltext nicht sofort gepostet habe,

aber ich schäme mich einwenig für diesen ^^!

Ich war ziemlich viel am Frickeln und bin ehrlich noch Blutiger Anfänger, also bitte nicht haun ^^!

Quelltext:

<?php

####### Eingabe Prüfung #########################

array_walk ( $_POST, 'eingabebereinigen' );

function eingabebereinigen(&$value, $key)

{

// keine HTML-Tags erlaubt, außer p und br

$value = strip_tags($value,'<p><br /><b><strong>');

// HTML-Tags maskieren

$value = htmlspecialchars($value, ENT_QUOTES);

// Leerzeichen am Anfang und Ende beseitigen

$value = trim($value);

}

####### Wenn abfrage ###########################

if

(

$_POST['name'] != "" &&

$_POST['email'] != "" AND

$_POST['eintrag'] != ""

)

####### Insert in die Datenbank #######################

{

$_POST['eintrag'] = nl2br($_POST['eintrag']);

$sql = " INSERT INTO ###gaestebuch ";

$sql .= " SET ";

$sql .= " email ='". $_POST['email'] ."', ";

$sql .= " name ='". $_POST['name'] ."', ";

$sql .= " url ='". $_POST['url'] ."', ";

$sql .= " datum ='". date("Y-m-d H:i:s") ."', ";

$sql .= " eintrag='". $_POST['eintrag'] ."' ";

define ( 'MYSQL_HOST', '####host####' );

define ( 'MYSQL_BENUTZER', '#####' );

define ( 'MYSQL_KENNWORT', '#####' );

define ( 'MYSQL_DATENBANK', '#####' );

############# Verbindungsaufbau prüfung ################################

$db_link = @mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);

if ( ! $db_link )

{

// hier soll dann später eine

// E-Mail mit dem Problem zukommen gelassen werden

// die Fehlermeldung für den Programmierer sollte

// das Problem ausgeben mit: mysql_error()

die('keine Verbindung zur Zeit möglich - bitte später probieren ');

}

$db_sel = mysql_select_db( MYSQL_DATENBANK )

or die("Auswahl der Datenbank fehlgeschlagen");

// ausführen des mysql-Befehls

$db_erg = mysql_query( $sql );

if ( ! $db_erg )

{

die('Ungültige Abfrage: ' . mysql_error());

}

########### Mail an ############################################

$empfaenger = "############"; //Mailadresse

$absender = $_POST['email'];

$betreff = "Gästebuch-Eintrag";

$mailtext = $_POST['eintrag'];

$antwortan = $_POST['email'];

unset($_POST);

mail( $empfaenger,

$betreff,

$mailtext,

"From: $absender\nReply-To: $antwortan");

if(!$_SERVER["HTTP_REFERER"]){

$redirect = "index.php?page=gaestebuch-eintrag&PHPSESSID=".session_id();

}

else

{

$redirect = $_SERVER["HTTP_REFERER"];

}

header("Location: ".$redirect);

exit;

}

?>

<form name="eintrag" action="" method="POST" enctype="text/html">

<p>Ihr Name:*<br />

<input type="text" name="name" value="" size="50" maxlength="150" />

</p>

<p>Ihre E-Mail-Adresse:*<br />

<input type="text" name="email" value="" size="50" maxlength="150" />

</p>

<p>Ihre Homepage:<br />

<input type="text" name="url" value="dwad" size="50" maxlength="150" />

</p>

<p align="center"><? echo $mailtext;?></p>

<p>Gästebucheintrag:*<br />

<textarea style="page-break-after: auto" name="eintrag" value="Text" rows="8" cols="45"></textarea>

</p>

<input type="Submit" name="speichern" value="speichern">    *Pflichtfelder<br/><br/>

<a href="gaestebuch.php">Zu den Gästebuch Einträgen<br/></a><br/>

</form>

<?

########## Auslesen der Datenbank ######################

define ( 'MYSQL_HOST', '#####Host######' );

define ( 'MYSQL_BENUTZER', '#####' );

define ( 'MYSQL_KENNWORT', '#####' );

define ( 'MYSQL_DATENBANK', '#####' );

############# Verbindungsaufbau prüfung ################################

$db_link = mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);

if ( ! $db_link )

{

// hier sollte dann später dem Programmierer eine

// E-Mail mit dem Problem zukommen gelassen werden

// die Fehlermeldung für den Programmierer sollte

// das Problem ausgeben mit: mysql_error()

die('keine Verbindung zur Zeit möglich - später probieren ');

}

$db_sel = mysql_select_db( MYSQL_DATENBANK )

or die("Auswahl der Datenbank fehlgeschlagen");

############## SQL-Befehl für den Zugriff #############################

$sql = "SELECT * FROM ###gaestebuch

ORDER BY datum desc";

############## ausführen des mysql-Befehls ##############################

$db_erg = mysql_query( $sql );

if ( ! $db_erg )

{

die('Ungültige Abfrage: ' . mysql_error());

}

############### Anzeige der Anzahl der Einträge ############################

$anzahl_eintraege = mysql_num_rows($db_erg);

$einträge = $anzahl_eintraege;

while ($daten = mysql_fetch_array( $db_erg, MYSQL_ASSOC))

{

########### Ausgabe der Daten ############################################

echo '<table border="1" width="100%">

<tr>

<td width="40%" align="left" valign="top" >';

echo "<b> Name: </b>";

echo $daten['name'];

echo "<br />";

echo "<b>Datum: </b>";

echo $daten['datum'];

echo "<br />";

echo "<b>E-Mail: </b>";

echo $daten['email'];

echo "<br />";

echo "<b>URL: </b>";

echo $daten['url'];

echo "<br /></td><td align='left' valign='top'>";

echo $daten['eintrag'];

echo "<br />";

echo '</td></tr></table>';

}

mysql_free_result( $db_erg );

?>

Geschrieben (bearbeitet)

Jo fangen wa mal an:

Wozu 2 mal Logindaten für MySQL?

Warum Shorttags und nicht <?php?

Alles in allem schon sehr unübersichtlich.

Gib mir mal bitte die DB dazu ich werds mal umbaun :)



if($_POST['name'] != "" && $_POST['email'] != "" AND $_POST['eintrag'] != "")

[/php]

auch ne interessante Art das lösen zu wollen :)

würd ich z.B. auf die Schnelle so machen:

[php]

if($_POST['name'] != "" || $_POST['email'] != "" || $_POST['eintrag'] != "")
echo "Error bitte alles Felder ausfüllen";

else {

dein insert oder was auch immer :)


}

bzw ich bau dir mal flink was zusammen :) denke mal dann hast du einen groben Überblick und kannst darauf aufbaun :)

Bearbeitet von Saerdna
Geschrieben (bearbeitet)

So also alles ins htdocs dann die SQL rein in PHPmyadmin oder was auch immer, dann in /include/dbconnect.php Logindatenanpassen und das wars :)

Ist ein Grundstein für normale Einträge musst dann einfach erweitern, bei Fragen immer her damit, habs nur auf die Schnelle gemacht aber bestimmt eine kleine Orientierung für dich :)

Edit

Hab die Anfrage zu Ausgabe aller Einträge nochmal nachträglich eingefügt musst nur noch die Tabelle einbaun wie du das haben willst, steht aber im Quelltext hab nur <table> und </table> eingebaut und darin die while Schleife.

guestbook.zip

Bearbeitet von Saerdna
Geschrieben

Ich empfehle ganz dringend die Logindaten außerhalb des Scriptes bzw außerhalb des DocumentRoot des Webservers zu lagern, da es sicherer ist, falls mal die Mimetypen falsch verarbeitet werden.

Geschrieben

Hmm bei hunderten von Scripten und CMS Systemen noch nie gesehn,

würde ja auch schlecht gehn wenn man z.B. nur ein Vserver hat der nur zugriff auf htdocs zulässt usw.

Das Logindaten nicht in der index.php zu suchen haben sollte klar sein, subfolder muss man natürlich schützen etc, aber darüber wurde hier nicht geredet :)

Geschrieben (bearbeitet)

Wie stellst das auf on wenn man keinen Zugriff auf die php.ini hat?

Und das nen MIME Type wie text/css falsch interpretiert wird halt ich für eher äußert unwarscheinlich.

Bearbeitet von Saerdna
Geschrieben

es geht um den mimetype application-xhtml/php ^^, der geht dann nähmlich als Quelltext raus und da stehen deine Zugangsdaten.

die basedir-direktive wird im vhost angegeben. D.h. muss vom Hoster eingerichtet werden. ob eine htaccess-variante möglich ist, weis ich auswendig nicht. Suchmaschinen helfen.

Geschrieben (bearbeitet)

Dennoch überflüssig aber jedem das Seine :)

Ab PHP 5.3 wird open_basedir auch für Änderungen während der Laufzeit mit der PHP Funktion ini_set freigegeben. Dadurch wird open_basedir für Zwecke des Einsperrens auf bestimmte Verzeichnisse am Webserver unwirksam...

Bearbeitet von Saerdna

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...