[PHP/MySQL] in datenbank schreiben

Re: [php/mysql] in datenbank schreiben

danke viemal.
werd mal schauen.
jetzt kommt kein fehler mehr auf der zeite. jedoch wird es immer noch nicht in die datenbank eingetragen :(
 
aso jetzt funktionierts.
hab es jetzt so gemacht mit mehreren .php seiten.

eintragen.php
PHP:
<h1>Mein Gästebuch</h1>
<h2>Eintragen</h2>
<?php
include "form.php";
?>

form.php
PHP:
<?PHP
	echo "<form action=\"script.php\" method=\"post\">
		Name: <input type=\"text\" name=\"name\"><br>
		E-Mail: <input type=\"text\" name=\"email\"><br>
		Homepage: <input type=\"text\" name=\"website\"><br>
		Text: <textarea cols=\"30\" rows=\"7\" name=\"text\"></textarea><br>
		<input type=\"submit\" value=\"Senden\">
		</form>";
?>

index.php
PHP:
<h1>Mein Gästebuch</h1>
<a href="eintragen.php">Im Gästebuch eintragen<p></a>
<?PHP
	$host = "localhost";
	$user = "fiechter_mi2g";
	$pass = "***";
	$db = "fiechter_gb";
	$connect = mysql_connect($host, $user, $pass) or die ("Keine Verbindung zum MySQL Server!");
	mysql_select_db($db, $connect) or die ("Datenbank nicht gefunden");
	
	$sel = "Select * From gb ORDER BY ID DESC";
	$qry = mysql_query($sel);
	
	while($row = mysql_fetch_object($qry))
{
	echo "<b>Name:</b> $row->Name<br>";
	echo "<b>E-Mail:</b> $row->Email<br>";
	echo "<b>Homepage:</b> $row->Website<br>";
	echo "<b>Text:</b> $row->Text<br><hr><br>";
}
?>

<a href="eintragen.php">Im Gästebuch eintragen</a>

script.php
PHP:
<?PHP
	$host = "localhost";
	$user = "fiechter_mi2g";
	$pass = "***";
	$db = "fiechter_gb";
	$connect = mysql_connect($host, $user, $pass) or die ("Keine Verbindung zum MySQL Server!");
	mysql_select_db($db, $connect) or die ("Datenbank nicht gefunden");
	$ins = "INSERT INTO `gb` ( `Name` , `Email` , `Website` , `Text` ) VALUES ('$name', '$email', '$website', '$text')";
	$entry = mysql_query($ins);
?>
Danke für den Eintrag <a href="index.php">weiter zur Hauptseite</a>

so funktionierts jetzt.
ein kumepl hat mir ein wenig dabei geholfen.
jetzt hab ich noch ein problem:
jetzt kann jemand ganz einfach das guestbook manipulieren.
z.b.
<br> dranhängen
und dann dibt es unterbrüche
oder die schriftfarbe bestimmen. wie kann ich das umgehen. wisst ihr was ich meine? danke schonmal.
 
Zuletzt bearbeitet von einem Moderator: ([php]-Tags verwenden!)
Schau mal auf www.php.net. Es gibt die Funktion: strip_tags(), die automatisch alle HTML-Tags entfernt, und so die von dir beschriebenen Effekte verhindert.

Ciao
 
danke hab mal geschaut. jedoch weiss ich nicht genau wie ich es anwenden muss.
 
mi2g schrieb:
danke hab mal geschaut. jedoch weiss ich nicht genau wie ich es anwenden muss.

Nicht? Na dann will ich mal nicht so sein. :D

PHP:
$sql_escape = create_function('$subst', 'return str_replace(\'\\\'\', \'\\\'\\\'\', stripslashes($subst));');


$ins = "INSERT INTO gb ( Name , Email , Website , Text )
 	VALUES ('$sql_escape(strip_tags($_POST[name]))', 
'$sql_escape(strip_tags($_POST[email]))', 
'$sql_escape(strip_tags($_POST[website]))', 
'$sql_escape(strip_tags($_POST[text]))')";


Achso, du solltest in deinem HTML-Formular die Eingaben auf die Maximallänge der Datenbankfelder begrenzen, sonst kriegst du nen DB-Error, falls eine eingabe zu lang ist. das $sql_escape ist übrigens ne Funktion aus meiner SQL-Klasse, welche ich für Verbindungen nach MySQL & Oracle verwende. Es sorgt dafür das Single-Quotes nach SQL-Standard escaped werden, sonst würdest Du auch hier nen SQL-Error bekommen.


Ciao
 
und wo muss ich das einfügen? also in welche datei? in die .script oder so?
sorry aber ich habe leider nicht so gross ahnung davon. :(
 
mi2g schrieb:
und wo muss ich das einfügen? also in welche datei? in die .script oder so?
sorry aber ich habe leider nicht so gross ahnung davon. :(


Genau da. Schau halt einfach in welcher Datei du die Variable $ins deklarierst. Betrifft ja das Eintragen in die Datenbank.


Ciao
 
$ins = "INSERT INTO `gb` ( `Name` , `Email` , `Website` , `Text` )
VALUES ('$sql_escape(strip_tags($_POST[name]))',
'$sql_escape(strip_tags($_POST))',
'$sql_escape(strip_tags($_POST[website]))',
'$sql_escape(strip_tags($_POST[text]))')";
$entry = mysql_query($ins);

so sieht mein code jetzt aus in der script.php datei aus (oben dran wäre natürlich noch die datenbank verbindung.
jedoch funktioniert es nicht ganz.

[url]http://www.fiechter.net/php/gaestebuch/[/url]
an was liegt das?
 
mi2g schrieb:
$ins = "INSERT INTO `gb` ( `Name` , `Email` , `Website` , `Text` )
VALUES ('$sql_escape(strip_tags($_POST[name]))',
'$sql_escape(strip_tags($_POST))',
'$sql_escape(strip_tags($_POST[website]))',
'$sql_escape(strip_tags($_POST[text]))')";
$entry = mysql_query($ins);

so sieht mein code jetzt aus in der script.php datei aus (oben dran wäre natürlich noch die datenbank verbindung.
jedoch funktioniert es nicht ganz.

[url]http://www.fiechter.net/php/gaestebuch/[/url]
an was liegt das?[/QUOTE]

Liegt an der temporären Funktion. Das folgende bindest Du ganz ans Ende der script.php ein.

[PHP]
function sql_escape($subst)
{
return str_replace('\'', '\'\'', stripslashes($subst));
)
[/PHP]

Und mit diesem Abschnitt ersetzt Du den ursprünglichen Eintrag für $ins.
[PHP]
$ins = "INSERT INTO gb ( Name , Email , Website , Text )
VALUES ('sql_escape(strip_tags($_POST[name]))',
'sql_escape(strip_tags($_POST[email]))',
'sql_escape(strip_tags($_POST[website]))',
'sql_escape(strip_tags($_POST[text]))')";
[/PHP]


Ciao.

P.S: Hab selbst mal nen Gästebuch gebastelt. Kannst ja mal auf [URL=http://www.swm-musicids.de]SWM MusiCids[/URL] unter Eure Meinung schauen.
 
man bin ich unfähig.
hab es so gemacht:

<?PHP
$host = "localhost";
$user = "fiechter_mi2g";
$pass = "***";
$db = "fiechter_gb";
$connect = mysql_connect($host, $user, $pass) or die ("Keine Verbindung zum MySQL Server!");
mysql_select_db($db, $connect) or die ("Datenbank nicht gefunden");
$ins = "INSERT INTO gb ( Name , Email , Website , Text )
VALUES ('sql_escape(strip_tags($_POST[name]))',
'sql_escape(strip_tags($_POST))',
'sql_escape(strip_tags($_POST[website]))',
'sql_escape(strip_tags($_POST[text]))')";
$entry = mysql_query($ins);

function sql_escape($subst)
{
return str_replace('\'', '\'\'', stripslashes($subst));
)
?>
Danke für den Eintrag <a href="index.php">weiter zur Hauptseite</a>

so sieht die script.php aus.
es funktioniert aber immer noch nicht.
 
mi2g schrieb:
man bin ich unfähig.
hab es so gemacht:

<?PHP
$host = "localhost";
$user = "fiechter_mi2g";
$pass = "***";
$db = "fiechter_gb";
$connect = mysql_connect($host, $user, $pass) or die ("Keine Verbindung zum MySQL Server!");
mysql_select_db($db, $connect) or die ("Datenbank nicht gefunden");
$ins = "INSERT INTO gb ( Name , Email , Website , Text )
VALUES ('sql_escape(strip_tags($_POST[name]))',
'sql_escape(strip_tags($_POST))',
'sql_escape(strip_tags($_POST[website]))',
'sql_escape(strip_tags($_POST[text]))')";
$entry = mysql_query($ins);

function sql_escape($subst)
{
return str_replace('\'', '\'\'', stripslashes($subst));
)
?>
Danke für den Eintrag <a href="index.php">weiter zur Hauptseite</a>

so sieht die script.php aus.
es funktioniert aber immer noch nicht.[/QUOTE]



Entschuldige, die Unfähigkeit lag diesmal bei mir. Ich arbeite nie mit den Anführungsstrichen, da kann das schonmal passieren.

[PHP]
$ins = 'INSERT INTO gb ( Name , Email , Website , Text )
VALUES (\''.sql_escape(strip_tags($_POST['name'])).'\',
\''.sql_escape(strip_tags($_POST['email'])).'\',
\''.sql_escape(strip_tags($_POST['website'])).'\',
\''.sql_escape(strip_tags($_POST['text'])).'\')';
[/PHP]


Ciao
 
danke jedoch geht es immer noch nicht.

<?PHP
$host = "localhost";
$user = "fiechter_mi2g";
$pass = "***";
$db = "fiechter_gb";
$connect = mysql_connect($host, $user, $pass) or die ("Keine Verbindung zum MySQL Server!");
mysql_select_db($db, $connect) or die ("Datenbank nicht gefunden");
$ins = "INSERT INTO `gb` ("Name", "Email", "Website", "Text") VALUES (\''.sql_escape(strip_tags($_POST['name'])).'\', \''.sql_escape(strip_tags($_POST['email'])).'\', \''.sql_escape(strip_tags($_POST['website'])).'\', \''.sql_escape(strip_tags($_POST['text'])).'\')";
$entry = mysql_query($ins);

function sql_escape($subst)
{
return str_replace('\'', '\'\'', stripslashes($subst));
)
?>
Danke für den Eintrag <a href="index.php">weiter zur Hauptseite</a>

jetzt kommt immer ein fehler wenn ich etwas schreiben will also wenn das script ausgeführ wird. der fehler lautet:

Parse error: parse error, unexpected T_STRING in /home/fiechter/public_html/php/gaestebuch/script.php on line 8
 
Scherzkeks. Bitte kopier einfach mal den Quelltext aus meinem Vorpost und ersetze die 8. Zeile komplett damit.

Du wirst sehen, dass es klappen wird.
 
danke vielmal. so funktionierts wunderbar. könntest du mir noch erklären wie das mit den befehlen genau geht. und was, was macht? einfach für später mal. :D
 
Zuletzt bearbeitet:
So wie versprochen, hier mal meine kleine Scriptesammlung.

Das RAR enthält alles was Du brauchst. Passe unter dem Ordner "global_includes" in der Datei "guestbook.inc" die Werte für
$db
$user
$pass

Deinen Einstellungen an. Erstelle mit der create.mysql Datei im Ordner "sql" die Datenstruktur. Der Ordner "global_includes" MUSS auf gleicher Ebene wie dein "htdocs" Verzeichnis sein. Sollte das nicht möglich sein, dann musst Du die Pfade in der "guestbook.php" anpassen.


Viel Spass beim ausprobieren.


[EDIT:]

Na gut: also die Funktion ersetzt den einfachen Hochstrich ' durch zwei einfache Hochstriche ''. Dadurch wird dieser Hochstrich dem ANSI-SQL Standard nach escaped, d.h. als Teil der Zeichenkette deklariert. Wirkung -> Die Datenbank liefert Dir keinen SQL-Error. Zusätzlich entfernt die Funktion evtl. vorhandene Backslashes vor den Quotes, die so mancher Webserver automatisch einfügt.

Und bezüglich strip_tags hast du dich ja bei www.php.net ausreichend informiert. ;)
 
Zuletzt bearbeitet:
ok danke vielmal. auch für das guestbook script.
 
Zurück
Oben