Senden_von_input
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ausgabe
bedarf
beispiel
bestimmte zeichen
code
datei
datum
einfaches beispiel
eingabe
feld
filtern
formular
inhalt
post
spalten
speichern
string
url
vergessen
zeichen
-
Moin
Ich habe da ein kleine Problem,
ich nehme als Beispiel ein Kleines Formular:
<html> <header> </header> <body> <form method="post" action="die andere website.lima-city.de"> <input type="text" name="p" value=""> <input type="text" name="u" value=""> <input type="submit" value="Senden"> </body> </html>
So nun ist das auf einer anderen Website und das andere was die Daten empfängt nicht auf der gleichen Website.
Wie kann ich jetzt machen das das die andere Website auch bekommt?
Geht das evt. mit get???
Lg swissmcs
Beitrag zuletzt geändert: 10.7.2012 23:30:16 von swissminecraftserver -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Verstehe das grad nicht ganz aber ich Versuch mal zu helfen.
- Wenn du auf dieserWebseite.html ein Formular hast, welches die method='GET', action='andereWebseite.php' und deine inputs.
- Angenommen du sendest die Daten (submit), dann rufst du lediglich in deinem Browser auf '[...]andereWebseite.php?p=value&u=value.
- andereWebseite.php kann diese Daten dann natürlich einfach GETen.
Ob dies so einfach mir POST funktioniert kann ich dir atm leider nicht sagen..
Beitrag zuletzt geändert: 10.7.2012 23:37:48 von copynpaste -
Also es ist eine völlig andere Website nicht bei lima.city...
Könntest du mal den Code posten?
Weiss nicht wie das mit dem "Get'en" geht
Vielen dank -
method="POST"
Bedeutet. dass die Daten im Header übergeben werden (im Prinzip beim normalen Surfen nicht sichtbar, aber kann aber ganz einfach ausgelesen werden, bringt also nicht ein bischen Sicherheit!!)
method="GET"
Bedeutet dass die Daten im URL übergeben werden (beginnend nach dem Fragezeichen, als Beispiel: url.de?p=wert1&u=wert2)
Nun zu deinem Code (wir bleiben bei POST und ja auch POST ist über 2 Seiten möglich..):
Dokument1:
<form method="post" action="die andere website.lima-city.de"> <input type="text" name="p" value=""> <input type="text" name="u" value=""> <input type="submit" value="Senden"> </form> <!-- hast du vergessen -->
Dokument2 (die andere Website..):
<?php // Für .. method="POST" .. echo $_POST['p']."<br> ".$_POST['u']; // Für .. method="GET" .. echo $_GET['p']."<br> ".$_GET['u']; ?>
Ich hoffe ich konnte helfen!
Gute Nacht
// Edit:
Es gibt viele Sicherheitsrisiken bei solchen Eingaben. Zum Beispiel könnte bei diesem einfachem Formular ein HTML-Code eingebaut werden oder soga Javascript, dieser könnte (z.B. in einem Gästebuch, ohne Sicherung) deine komplette Seite verändern, lahm legen usw.
htmlspecialchars($_POST['name']); // verhindert das benutzen von HTML, bzw. Scripteinbindungen mysql_real_escape_string($_POST['name']); /* dies brauchst du bei Datenbanken, nur so als kleiner Tipp, damit du (wenn es soweit ist, danach mal googlest. Ist echt wichtig!!! */
Beitrag zuletzt geändert: 11.7.2012 0:13:06 von fabi755 -
Hallo
würde auf der Seite, die empfangen soll noch prüfen, ob überhaupt Eingabe erfolgt ist
bzw. ob das Formular (bzw einzelne Felder) leer (ohne Eingabe) abgesendet wurde
einfaches Beispiel
<?php if ( !empty($_POST['p']) && !empty($_POST['u']) ) { // ---- je nach Bedarf die Eingabe-Strings escapen / filtern / säubern ---- $data_p = trim(chop($_POST['p'])); $data_p = strip_tags($data_p); $data_p = stripslashes($data_p); $data_p = htmlspecialchars($data_p); $data_u = trim(chop($_POST['u'])); $data_u = strip_tags($data_u); $data_u = stripslashes($data_u); $data_u = htmlspecialchars($data_u); $ausgabe = "<br /> Feld p hat den Inhalt: ".$data_p." und Feld u hat den Inhalt: ".$data_u."\n"; } else { // ---- wenn min. eines der beiden Eingabe-Felder leer war ---- $ausgabe = "<br /> Bitte alle Felder im Formular ausfüllen ... <a href=\"javascript:history.back()\">zurück</a> \n"; } echo $ausgabe; ?>
das geht auch noch differenzierter, also einzeln prüfen, welches Feld jetzt "leer" war
oder auch ob der Eingabe-String bestimmte Bedingungen erfüllt (z.B. nur Zahlen erlauben, etc)
aber als einfaches Beispiel sollte es so genügen. Es soll ja nur zeigen,
dass man die POST oder GET Variablen möglichst vor der weiter-Verarbeitung
prüfen und filtern (escapen / säubern) soll, damit man nur mit "sinnvollen" EIngaben weiter macht
besonders wenn man die Daten dann auch speichern will, ist escapen (säubern) wichtig,
und wie fabi755 schon gesagt hat
vor Speichern in MySQL sollte man User-Eingaben immer mit mysql_real_escape_string() filtern
dazu sollte aber die DB-Vernindung schon bestehen, damit mysql_real_escape_string richtig funktioniert
also damit gleich im richtigen Zeichensatz escaped wird.
aber auch beim Speichern in Datei kann es sein, dass bestimmte Zeichen Probleme machen,
wenn es z.B. im CSV Format gespeichert werden soll, dann vorher Zeilenumbrüche raus-filtern
und ggf auch das Spalten-Trenner-Zeichen, wenn Spalten ohne Enclosure gespeichert werden
oder enclosure-Zeichen aus String filtern, wenn mit Enclosure gespeichert werden soll.
-
Als wenn ich es mit "GET" benutze muss ich dann bei <form method="post"... <form method="get"....<input type="text" name="p" value=""> reinschreiben?
Und dann bein URL:
blabla.de?p=wert1&u=wert2
oder muss ich da:
echo $_GET['p']."<br>
".$_GET['u'];
?>
lg swissmcs -
form.html:
<form action='andereSeite.php' method='GET'>
(= http://....andereSeite.php?p=value&u=value)
andereSeite.php:
echo $_GET['u']." ".$_GET['p'];
-
copynpaste schrieb:
Und so sollte man es nicht machen...
andereSeite.php:
echo $_GET['u']." ".$_GET['p'];
So würde es gehören:echo(htmlentities("{$_GET['u']} {$_GET['p']}"));
Ansonsten ist das nicht gegen Cross-Site-Scripting geschützt.
tags schrieb:
Noch mehr Mist kann ja schon gar nicht erzählt werden...
// ---- je nach Bedarf die Eingabe-Strings escapen / filtern / säubern ---- $data_p = trim(chop($_POST['p'])); $data_p = strip_tags($data_p); $data_p = stripslashes($data_p); $data_p = htmlspecialchars($data_p);
strip_tags kannst du dir sparen, da htmlspecialchars sowieso schon veranlasst, dass Tags ausgegeben werden ohne ausgeführt zu werden.
stripslashes ist sogar gefährlich, da nicht immer Magic Quotes (die längst schon veraltet sind) aktiviert sind und wenn sie nicht aktiviert sind lassen sich damit alle anderen Prüfungen bis dort hin umgehen!
tags schrieb:
Schon vergessen wie CSV funktioniert? Es gibt kaum ein Zeichen das nicht erlaubt ist.... denn selbst
aber auch beim Speichern in Datei kann es sein, dass bestimmte Zeichen Probleme machen,
wenn es z.B. im CSV Format gespeichert werden soll, dann vorher Zeilenumbrüche raus-filtern
und ggf auch das Spalten-Trenner-Zeichen, wenn Spalten ohne Enclosure gespeichert werden
oder enclosure-Zeichen aus String filtern, wenn mit Enclosure gespeichert werden soll.
und Zeilenumbrüche können gespeichert werden."
Wenn du es nicht glaubst: mach dir mit Excel eine Tabelle mit Zeilenumbrüchen, Anführungszeichen und sonst was und speicher es als CSV. Dann betrachtest du dieses und merkst dir das Ergebnis!
Wenn also CSV richtig gespeichert wird müssen sowieso die Daten "formatiert" werden, und dabei sollten sie nicht vorher schon durch sinnlose "Filterung" "verpfuscht" worden sein.
@TE:
GET wird übrigens niemals für Passwörter o.ä. verwendet, da die sonst in der Adresszeile des Browsers zu finden wären... -
hackyourlife schrieb:
Und so sollte man es nicht machen...
- Weiß ich.
- Warum soll ich wiederholen, was andere vorher schon erklärt haben, zusammenführen sollte der TE selber können.
- Hab nur kurz und knapp auf seine letzte Frage geantwortet, weil er verwirrt war. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage