Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
Kommentar vom Moderator masterG am 18.06.2010 um 15:58:14 Uhr
Titel angepasst.
GELÖST

PHP - Formularfelder validieren und absenden.

Frage Entwicklung PHP

Mitglied: dark3zz

dark3zz (Level 1) - Jetzt verbinden

18.06.2010, aktualisiert 15:58 Uhr, 5882 Aufrufe, 5 Kommentare

brauche noch ein tipp wie ich daten auf in eine neue seite bringe um sie dann in die mySQL eintragen kann.

ich habe das script von hier: http://www.tutorials.de/forum/php-tutorials/13494-php-formular-eingabe- ... welches ich sehr gut finde zum validieren. ich schaffe es aber nicht die daten per $_POST an mein action script zu übergeben welches dann die daten in die mySQL schreibt. mySQL schreibt zwar eine row, aber ohne inhalt. die felder sind leer. wie auch, bei meinem url leite ich nur aufs actionscript weiter.....

mit einer header (Location:...) komme ich nicht weiter, da ich oben schon html ausgebe....

wer kann mir hier helfen damit ich die $_variablen per $_POST oder $_GET oder anderes auf eine neue seite bringen kann ? ich habe versucht in zeille 19 dann weiterzuleiten......jetzt steht nur ein normaler html url da.

01.
die meta tags und header bis zum body
dann hier das script

01.
<?php 
02.
        if ($action=="check") {  
03.
                if(eingabe_check($anmeldetyp,$firma,$name,$vorname,$titel,$adresse,$ort,$land,$email,$webseite,$telefon,$fax,$anmerkungen)==1) {   
04.
                echo "Sie haben folgende Informationen eingetragen:<br><hr><br>"
05.
                echo "Anmeldetyp: ".$anmeldetyp."<br>"
06.
                echo "Firma: ".$firma."<br>"
07.
                echo "Name: ".$name."<br>"
08.
                echo "Vorname: ".$vorname."<br>"
09.
                echo "Titel: ".$titel."<br>"
10.
                echo "Adresse: ".$adresse."<br>"
11.
                echo "Ort: ".$ort."<br>"
12.
                echo "Land: ".$land."<br>"
13.
                echo "E-mail: ".$email."<br>"
14.
                echo "Webseite: ".$webseite."<br>"
15.
                echo "Telefon: ".$telefon."<br>"
16.
                echo "Fax: ".$fax."<br>"
17.
                echo "Anmerkungen: ".$anmerkungen."<br>"
18.
                echo "<br><hr><br>"
19.
                echo "hier gehts zum <a href=\"teilnehmer_anmeldung_action.php\">ACTIONSCRIPT</a> welches die $ variablen in die mySQL schreibt. ."
20.
21.
            else
22.
                echo eingabe_check($anmeldetyp,$firma,$name,$vorname,$titel,$adresse,$ort,$land,$email,$webseite,$telefon,$fax,$anmerkungen);     
23.
                formular_ausgabe($anmeldetyp,$firma,$name,$vorname,$titel,$adresse,$ort,$land,$email,$webseite,$telefon,$fax,$anmerkungen);       
24.
25.
26.
        else
27.
            formular_ausgabe($anmeldetyp,$firma,$name,$vorname,$titel,$adresse,$ort,$land,$email,$webseite,$telefon,$fax,$anmerkungen);           
28.
29.
 
30.
        function formular_ausgabe($anmeldetyp,$firma,$name,$vorname,$titel,$adresse,$ort,$land,$email,$webseite,$telefon,$fax,$anmerkungen
31.
        {  
32.
            global $PHP_SELF;                          
33.
            echo
34.
 
35.
            <form action=\"".$PHP_SELF."?action=check\" method=\"post\" name=\"anmeldung\" id=\"teilnehmeranmeldung\" enctype=\"multipart/form-data\"
36.
             <table id=table1> 
37.
             <thead> 
38.
              <tr><td class=head colspan=2><span class=style1>Anmeldung</span></td></tr> 
39.
             </thead> 
40.
              <tr><td class=bodyleft><input type=radio name=anmeldetyp value=teilnehmer checked=checked>&nbsp;Teilnehmer</td> 
41.
              <td class=bodyright>...</td></tr> 
42.
              <tr><td class=bodyleft><input type=radio name=anmeldetyp value=studenten>&nbsp;Studenten*</td> 
43.
             </table> 
44.
               <br> 
45.
 
46.
             <table id=table1> 
47.
             <thead> 
48.
              <tr><td width=140px class=bodyleft><label for=firma>Firma</label></td> 
49.
              <td><input class=input name=firma type=text size=60 value=\"".$firma."\"></td></tr> 
50.
             </thead> 
51.
              <tr><td class=bodyleft><label for=name>Nachname*</label></td> 
52.
              <td><input class=input name=name type=text size=60 value=\"".$name."\"></td></tr> 
53.
              <tr><td class=bodyleft><label for=vorname>Vorname*</label></td> 
54.
              <td><input class=input name=vorname type=text size=60 value=\"".$vorname."\"></td></tr> 
55.
              <tr><td class=bodyleft><label for=titel>Anrede/Titel</label></td> 
56.
              <td><input class=input name=titel type=text size=60 value=\"".$titel."\"></td></tr> 
57.
              <tr><td class=bodyleft><label for=adresse>Adresse*</label></td> 
58.
              <td><input class=input name=adresse type=text size=60 value=\"".$adresse."\"></td></tr> 
59.
              <tr><td class=bodyleft><label for=ort>PLZ/Ort*</label></td> 
60.
              <td><input class=input name=ort type=text size=60 value=\"".$ort."\"></td></tr> 
61.
              <tr><td class=bodyleft><label for=land>Land</label></td> 
62.
              <td><input class=input name=land type=text size=60 value=\"".$land."\"></td></tr> 
63.
              <tr><td class=bodyleft><label for=email>E-Mail*</label></td> 
64.
              <td><input class=input name=email type=text size=60 value=\"".$email."\"></td></tr> 
65.
              <tr><td class=bodyleft><label for=webseite>Webseite</label></td> 
66.
              <td><input class=input name=webseite type=text size=60 value=www 
67.
                onFocus='if(this.value==\"www\") this.value=\"\";' onblur='if(this.value==\"\")this.value=\"www\";'/></td></tr> 
68.
              <tr><td class=bodyleft><label for=telefon>Telefon</label></td> 
69.
              <td><input class=input name=telefon type=text size=60 value=\"".$telefon."\"></td></tr> 
70.
              <tr><td class=bodyleft><label for=fax>Fax</label></td> 
71.
              <td><input class=input name=fax type=text size=60 value=\"".$fax."\"></td></tr> 
72.
              <tr><td class=bodyleft><label for=anmerkungen>Anmerkungen</label></td> 
73.
              <td><input class=input name=anmerkungen type=text size=60 value=\"".$anmerkungen."\"></td></tr> 
74.
              <tr><td colspan=2><p class=stylegrau>* = Alle Pflichfelder auszufüllen.</p> <br><br></td></tr> 
75.
              <tr><td>&nbsp;</td> 
76.
              <td><input type=\"submit\" name=\"submit\" id=\"submit\" onClick=\"return test()\" value=\"Anmelden\" class=\"button1\" /></td></tr> 
77.
             </table> 
78.
            </form> 
79.
                "; 
80.
81.
        // Alle eingaben werden darauf geprüft ob sie überhaupt gemacht wurden wurden sie nicht gemacht wird die Variable $fehler gesetzt oder eine weitere Fehlermeldung angehängt. 
82.
        function eingabe_check($anmeldetyp,$firma,$name,$vorname,$titel,$adresse,$ort,$land,$email,$webseite,$telefon,$fax,$anmerkungen
83.
84.
            if ($name == "") $fehler = $fehler." Nachname,"
85.
            if ($vorname == "") $fehler = $fehler." Vorname,"
86.
            if ($adresse == "") $fehler = $fehler." Adresse,"
87.
            if ($ort == "") $fehler = $fehler." PLZ & Ort"
88.
            if ($email == ""){ 
89.
                $fehler = $fehler." Emailadresse"
90.
91.
            else
92.
                if(strstr($email,"@") && strstr($email,".")){    # überprüfen der amiladresse. benötigt wird ein @ und ein . 
93.
94.
                else
95.
                    $fehler = $fehler." und das Emailformat ist falsch."
96.
97.
98.
          if ($fehler =="") return 1;   # gab es keinen Fehler bei der überpüfung geben wir 1 zurück 
99.
                else{                   #ansonsten die Fehlermeldung 
100.
                    return
101.
                            <div id=fehler><span class=stylered>FEHLER!</span> <br>Es fehlen noch folgende Angaben: <span class=stylered>".$fehler."</span></div> 
102.
                            <br> 
103.
                            <br> 
104.
                  "; 
105.
                     
106.
                }      
107.
108.
?>
01.
            <br/> 
02.
            <br/> 
03.
            <br/> 
04.
            <div class="footer"><?php include ("site.footer.php") ;?></div> 
05.
        </div> 
06.
        <div id="spatopre"></div> 
07.
    <br/> 
08.
    <br/> 
09.
  </body> 
10.
</html>
Mitglied: RedEye
18.06.2010 um 15:32 Uhr
Hallo,

muss mich gleich mal entschuldigen aber der Code kommt ja direkt aus der Hölle Nicht böse gemeint.
Ernsthaft validiert und geprüft wird hier keine einzige Eingabe des Benutzers.
Ausserdem solltest Du keinen HTML-Code in Deine Funktionen einbauen, da ja das Prinzip von Funktionen (z.Bsp. Wiederverwendbarkeit) total umsonst ist.

Bevor man da rumschreibt würde ich vorschlagen das Du Dich entweder nochmals auf die Suche nach einem guten Tutorial machst oder Dich mal etwas genauer in PHP einarbeitest.

--
LG
RedEye
Bitte warten ..
Mitglied: masterG
18.06.2010 um 15:57 Uhr
Tipp von mir: wenn du schaun willst ob das fehlt leer ist lös es doch so:
01.
<?php 
02.
if(empty($_POST['feld'])) 
03.
         echo "feld ist leer"
04.
?>
Bitte warten ..
Mitglied: dog
18.06.2010 um 21:45 Uhr
Und jetzt schauen wir uns mal ein ganz einfaches Beispiel für 1 Feld an:

01.
<?php 
02.
 
03.
	//alles was aus richtung benutzer kommt und wieder ausgegeben werden soll, muss 
04.
	//erst durch diese Funktion um es sicher zu machen 
05.
	function hsp($str
06.
07.
		return htmlspecialchars($str, ENT_COMPAT, 'UTF-8'); 
08.
09.
	 
10.
	//nur ein kleines Beispiel! 
11.
	class MySQL { 
12.
		private $connection
13.
		 
14.
		public function __construct($host,$user,$pass,$db
15.
16.
			$con = @mysql_connect($host.':3306', $user, $pass); 
17.
			if(!is_resource($con)) 
18.
				throw new Exception(mysql_error(), mysql_errno()); 
19.
			mysql_select_db($db, $con); 
20.
			$this->connection = $con
21.
22.
		 
23.
		public function esc($str
24.
25.
			return mysql_real_escape_string($str, $this->connection); 
26.
27.
		 
28.
		public function query($str
29.
30.
			return mysql_query($str, $this->connection); 
31.
32.
33.
 
34.
	//diese variable will ich später benutzen, also stelle ich sicher, dass es sie gibt! 
35.
	$error = null; 
36.
 
37.
	//der folgende Code wird nur ausgeführt, wenn das Formular wirklich abgesendet wurde 
38.
	if(isset($_POST['frm_sent'])) { 
39.
		//ein try block läuft solange bis ein throw kommt und bricht dann an und springt 
40.
		//zum catch Block 
41.
		try { 
42.
			//empty ist keine funktion, sondern ein sprachkonstrukt. es stellt sicher, dass 
43.
			//es eine Variable wirklich gibt, und dass sie nicht leer ist 
44.
			if(empty($_POST['frm_name'])) 
45.
				throw new Exception('Bitte geben Sie einen Namen an!'); 
46.
			//jetzt entfernen wir unbedeutende Leerzeichen  "    Hans Wurst   " => "Hans Wurst" 
47.
			$name = trim($_POST['frm_name']); 
48.
			//und jetzt schauen wir, ob wir noch einen realistischen wert haben 
49.
			if(strlen($name) < 5) 
50.
				throw new Exception('Der eingegebene Name scheint zu kurz!'); 
51.
			//db verbindung aufbauen 
52.
			$dbc = new MySQL('localhost','ruth','12345','test'); 
53.
			//wert für die verarbeitung durch mysql sicher machen 
54.
			$name = $dbc->esc($name); 
55.
			//und einfügen 
56.
			$dbc->query(sprintf('INSERT INTO tbl1(`name`) VALUES("%s")',$name)); 
57.
			//und jetzt den benutzer mit einem erfolgshinweis woanders hin schicken 
58.
			header('Location: index.php?success=1'); 
59.
			//wichtig: seite beenden 
60.
			exit(0); 
61.
		} catch (Exception $e) { 
62.
			$error = $e->getMessage(); 
63.
64.
65.
 
66.
?> 
67.
<html> 
68.
	<body> 
69.
<?php if($error): ?> 
70.
		<div class="error"><?php echo hsp($error) ?></div> 
71.
<?php endif; ?> 
72.
		<form action="" method="post"
73.
			Name: <input type="text" name="frm_name" value="<?php echo hsp(@$_POST['frm_name']) ?>"/><br/> 
74.
			<input type="submit" name="frm_sent" value="Senden"/> 
75.
		</form> 
76.
	</body> 
77.
</html>
  • Niemals einfach so $PHP_SELF benutzen. Das ist kein Serverwert sondern eine Benutzereingabe und muss auch genauso behandelt werden. Im Zweifel ist es also völlig nutzlos.
  • Niemals den Code der die Eingaben prüft und den Code, der es in die DB schreibt auf 2 Dateien aufteilen und durch den Browser schleusen - das macht ja jegliche Validierung hinfällig, weil ich als User ja nach der Validierung die Daten wieder ändern kann - der Punkt ist wirklich wichtig. Wenn du den nicht verstehst frag bitte nochmal.
  • Niemals einfach so Benutzereingaben wieder ausgeben, wie z.B. bei size=60 value=\"".$name."\"></td></tr>
  • Niemals einfach so annehmen, dass es eine Variable gibt (wie es in diesem Code gemacht wird). Für alle Variablen, die man benutzt muss man auch sicherstellen, dass sie vorhanden sind.
  • Niemals register_globals benutzen (wie in dem Beispiel getan)

Das ist aber nur die Spitze des Eisbergs
Bitte warten ..
Mitglied: Saneke
19.06.2010 um 12:47 Uhr
Hallo Zusammen

Was sicher auch nicht fehlen darf sind solche Sachen wie:

htmlspecialchars — Wandelt Sonderzeichen in HTML-Codes um

oder

htmlentities — Wandelt alle geeigneten Zeichen in entsprechende HTML-Codes um

Formulare ohne solche Spielereien gelten als Sicherheitsrisiko und deshalb umbedingt anwenden.
Bitte warten ..
Mitglied: dark3zz
19.06.2010 um 13:19 Uhr
hoied. ja jetzt mit euren lösungsvorschlägen ist mir einiges klarer.....
in meinem zweiten file wo ich INSERTe tue ich jede eingabe noch "escapen" aber anscheinend nutzt mein aufbau also wenig dachte es waere so relativ sicher.......wenn ich $_POST verwende und einfach escape....

merci fuer die tipps. werde es auf jedenfall so anwenden. 1file form & function und die weiterleitung fuer das feedback das alles io ist, ist dann erst nach einem sucess!
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...