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

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

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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