Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

Wie währs mal mit dem Quellcode oder wie sollen wir dir da helfen?

Glaskugeln habe ich leider keine mehr sind mir letzte Nacht ausgegangen :D

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 );

?>

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

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

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 :)

man nennt es open_basedir, es bestimmt neben dem document_root welches verzeichnis gelesen werden darf (außerhalb des docroot)

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

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.

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 Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.