ich bräuchte jemanden, der mir dabei behilflich sein kann ein Forular zu erstellen. Ich bin absolut neu auf dem Gebiet und würde mich über ein Beispiel sehr freuen
Beispiel:
Das Formular hat 3 Felder
Vorname
Nachmame
Email
Diesen Daten sollen in eine Datenbank geschrieben werden. Wichtig dabei wäre, das "Vorname" und "Email" pflichtfelder sein sollten.
Für Profis ist das sicherlich ein Witz, aber für mich absolutes Neuland.
Gruß logi
This post has been edited 2 time(s), it was last edited by logi: 14.01.2010 15:46.
<!-- hier den html header und den bereich ueber der form -->
<?php
if (isset($_POST['vorname'], $_POST['name'], $_POST['mail'])) {
// wenn alle daten gegeben sind
$user = "username"; // unbedingt deine daten eingeben!
$password = "password";
$host = "localhost";
$database = "datenbank";
$table = "table";
mysql_connect($host, $user, $password) or die('<p>Cannot connect to database:<br>'.mysql_error().'</p>'); // verbindung herstellen
mysql_select_db($database) or die('<p>Cannot select database:<br> '.mysql_error().'</p>'); // datenbank auswählen
$query = "INSERT INTO `".$table."`(`vorname`, `name`, `mail`) VALUES ('".$_POST['vorname']."', '".$_POST['name']."', '".$_POST['mail']."')";
mysql_query($query) or die('<p>Insertion failed!<br>'.mysql_error().'</p>'); //versuchen, mail in datenbank einzufuegen
if (mysql_query)
echo '<p>Success!<br>Wrote mail to Database</p>'; //wenn mail erfolgreich eingefuegt wurde, gib nachricht aus
}
} else {
echo '<form method="post" action="index.php">
<label for="vorname">Vorname: </label><br>
<input type="text" name="vorname" value="'.$_POST['vorname'].'"><br>
<label for="name">Name: </label><br>
<input type="text" name="name" value="'.$_POST['name'].'">
<label for="mail">E-Mail: </label>
<textarea name="mail">'.$_POST['mail'].'</textarea>
<input type="submit" value="Abschicken">
</form>'; // fügt die eingegebenen daten in die form ein, damit sie nicht erneut eingegeben werden, wenn keine daten gegeben sind, wird halt ein leeres formular angezeigt ...
?>
<!-- hier den footer und den bereich unter der form -->
ungetestet ... (zu faul ne testdatenbank aufzumachen
)
/e:
achso, wenn nur vorname und mail pflicht sein sollen, ändere zeile 5 wie folgt:
php:
1:
if (isset($_POST['vorname'], $_POST['mail'])) {
Vergiss aber bitte nicht, das Markup zu komplettieren!
Also alles was übere und unter der Form sein sollte.
This post has been edited 5 time(s), it was last edited by quantum: 14.01.2010 16:18.
<!-- hier den html header und den bereich ueber der form -->
<?php
if (isset($_POST['vorname'], $_POST['name'], $_POST['mail'])) {
// wenn alle daten gegeben sind
$user = "username"; // unbedingt deine daten eingeben!
$password = "password";
$host = "localhost";
$database = "datenbank";
$table = "table";
mysql_connect($host, $user, $password) or die('<p>Cannot connect to database:<br>'.mysql_error().'</p>'); // verbindung herstellen
mysql_select_db($database) or die('<p>Cannot select database:<br> '.mysql_error().'</p>'); // datenbank auswählen
$query = "INSERT INTO `".$table."`(`vorname`, `name`, `mail`) VALUES ('".$_POST['vorname']."', '".$_POST['name']."', '".$_POST['mail']."')";
if (mysql_query($query)) echo '<p>Success!<br>Wrote mail to Database</p>'; //wenn mail erfolgreich eingefuegt wurde, gib nachricht aus
else die('<p>Insertion failed!<br>'.mysql_error().'</p>'); //versuchen, mail in datenbank einzufuegen
} else {
echo '<form method="post" action="index.php">
<label for="vorname">Vorname: </label><br>
<input type="text" name="vorname" value="'.$_POST['vorname'].'"><br>
<label for="name">Name: </label><br>
<input type="text" name="name" value="'.$_POST['name'].'">
<label for="mail">E-Mail: </label>
<textarea name="mail">'.$_POST['mail'].'</textarea>
<input type="submit" value="Abschicken">
</form>'; // fügt die eingegebenen daten in die form ein, damit sie nicht erneut eingegeben werden, wenn keine daten gegeben sind, wird halt ein leeres formular angezeigt ...
?>
<!-- hier den footer und den bereich unter der form -->
ungetestet ... (zu faul ne testdatenbank aufzumachen
)
/e:
achso, wenn nur vorname und mail pflicht sein sollen, ändere zeile 5 wie folgt:
php:
1:
if (isset($_POST['vorname'], $_POST['mail'])) {
Vergiss aber bitte nicht, das Markup zu komplettieren!
Also alles was übere und unter der Form sein sollte.
<!-- hier den html header und den bereich ueber der form -->
<?php
if (isset($_POST['vorname'], $_POST['name'], $_POST['mail'])) {
// wenn alle daten gegeben sind
$user = "username"; // unbedingt deine daten eingeben!
$password = "password";
$host = "localhost";
$database = "datenbank";
$table = "table";
mysql_connect($host, $user, $password) or die('<p>Cannot connect to database:<br>'.mysql_error().'</p>'); // verbindung herstellen
mysql_select_db($database) or die('<p>Cannot select database:<br> '.mysql_error().'</p>'); // datenbank auswählen
$query = "INSERT INTO `".$table."`(`vorname`, `name`, `mail`) VALUES ('".$_POST['vorname']."', '".$_POST['name']."', '".$_POST['mail']."')";
if (mysql_query($query)) echo '<p>Success!<br>Wrote mail to Database</p>'; //wenn mail erfolgreich eingefuegt wurde, gib nachricht aus
else die('<p>Insertion failed!<br>'.mysql_error().'</p>'); //versuchen, mail in datenbank einzufuegen
} else {
echo '<form method="post" action="index.php">
<label for="vorname">Vorname: </label><br>
<input type="text" name="vorname" value="'.$_POST['vorname'].'"><br>
<label for="name">Name: </label><br>
<input type="text" name="name" value="'.$_POST['name'].'">
<label for="mail">E-Mail: </label>
<textarea name="mail">'.$_POST['mail'].'</textarea>
<input type="submit" value="Abschicken">
</form>'; } // fügt die eingegebenen daten in die form ein, damit sie nicht erneut eingegeben werden, wenn keine daten gegeben sind, wird halt ein leeres formular angezeigt ...
?>
<!-- hier den footer und den bereich unter der form -->
/e #2:
Also bei mir gibt's diesmal keinen Parse Fehler, scheint alles korrekt
This post has been edited 3 time(s), it was last edited by quantum: 14.01.2010 16:47.
nun wird der Eintrag gemacht, aber auf der Hauptseite steht über dem Formular immer noch
Notice: Undefined index: vorname in F:\wamp\www\gtarl\index.php on line 21
Wenn man nun auf "Abschicken" klickt wird der Beitrag in derDB gemacht.
Problem ist: man kann eine leeres Feld abschicken und wenn die Nachricht kommt das der Eintrag gemacht wurde und dann F5 drückt, wird der Eintrag noch mal gemacht.
Jo.
An der Stelle wird eigentlich auch nicht aktualisiert.
Man hat ja eigentlich noch den rest der .html und die sollte da halt einen link zu der Seite haben, damit aktualisierungen vermieden werden.
Ich muss demnächste/heute so etwas ähnliches für mein eigenes CMS implementieren, mit benutzer usw.
wenn du dich geduldest, kann ich dir das dann passend abwandeln
Hier der Zwischenstand
(Damit du erstmal etwas hast, ich neige nämlich dazu, keines meiner projekte zu beenden
– außerdem kann da nochmal wer drüber gucken, wegen sicherheit
)
<?php
session_start();
if (isset($_SESSION['user'])) { // wenn user-daten gegeben sind
echo '<p><form method="post" action="logout.php">
<input type="hidden" name="logout" value="true">
<input type="submit" value="Logout"></form></p>'; // form, die dem script logout.php die $_POST['logout'] = true uebergibt
echo '<h2>Artikel und Seiten verwalten</h2>'; // moeglichkeiten, die wir haben
// hier geht es dann weiter :D
// bla bla:
//
// echo '<h2>Artikel:</h2>';
// $query = "SELECT id, heading, category FROM articles ORDER BY id";
// gebe artikel, seiten, kategorien & benutzer aus (evtl. die letzten 5 jeweils)
// je ueberschrift (Artikel, seiten, benutzer, seiten) gebe optionen: add, edit, delete
// uebergebe den dateien add.php, edit.php und delete.php den parameter "type" (page,article,cat,user)
// das kommt hier noch bla ...
} else {
header("location:log.php");
}
?>
CrAc, achte auf SQL Injections.^^
So ist deine Seite ganz schnell gehackt. xD
Ersetze Zeile 19 in log.php wie folgt:
php:
1:
$query = "SELECT * FROM `".$table."` WHERE `username` = '".mysql_real_escape_string($_POST['user'])."' and password = '".mysql_real_escape_string($_POST['password'])."'";
Soviel mal zur Sicherheit.
Tipp: Ich würde nicht so viele Variablen benutzen.
Die verbrauchen nur unnötig Platz, Übersicht und Performance.
Nochwas allgemein:
Verschlüssel Passwörter immer mit MD5, das ist sicherer.
PHP Funktion: md5(string);
If you were enjoying this post and if you keen on reading more interesting stuff then do not hesitate to complete the free sign up.
After the free registration you will gain access to all areas and you will be able to communicate with other artists from all over the world.
In addition you will benefit from our Photoshop and coding section as well as from our huge (hundreds of gigabytes) free resource section where you can find everything you will need to be a successful (web) designer/artist.
Sign up now and enjoy the advantages as a registered member.
(This website will be ad-free after a complete free sign up.)