• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Formulardaten via GET an externe URL übergeben

jobo218

Mitglied
Hallo!

Ich möchte mit einem Formular Daten an eine externe URL (.jsp) übergeben. Das ganze wäre mit der GET-methode glaube ich am sinnvollsten, denn so sollen die Daten dort bereit gestellt werden. Also im Prinzip ja einfach die Daten an die URL der externen Seite anhängen.

Nun soll der User aber natürlich von all dem nichts mitbekommen, deshalb frage ich mich wie man das am besten löst, denn wenn ich das Formular ja direkt mit method="GET" und action="HIER dann die externe URL", so wird ja -schätze ich- die externe URL aufgerufen.
Man soll aber auf der Seite bleiben.

Wie kann man das lösen? Einsatz von AJAX? Oder geht das auch viel einfacher?

Kann ich evtl. einfach die Formulardaten an eine (andere) PHP-Datei mit POST senden und dort wird dann "manuell" die externe URL aufgerufen, und ich hänge die Variablen dann einfach an?

Evtl. mit cURL?

Wäre dankbar für eine Hilfestellung.
 
Zuletzt bearbeitet:
Werbung:
Bin jetzt ein Stück weitergekommen..

Habe also mein HTML-Formular, und folgendes Javaskript, um das ganze zu validieren.

Und dazu nun folgenden Code für AJAX, der das Formular verarbeitet und die PHP-Datei heimlich ausführt (ob der Header-Redirect aufgerufen wird kann ich leider nicht testen, aber ich habe eine Mail-Funktion eingebaut, und diese funktioniert..)
Habe das AJAX beim "submitHandler" eingebaut, damit das Formular von AJAX erst verarbeitet wird wenn es korrekt validiert ist (fehlt da noch eine if-condition oder passt das so?, scheint zu funktionieren).

Nun scheitert es glaube ich nur noch am Captcha.. Ich habe ein Captcha eingebaut, das über eine andere PHP-Datei erzeugt und als Bild eingebunden wird. Die Überprüfung, ob das eingegebene Captcha und das Original übereinstimmt wird in der Nachricht.php vorgenommen.

Das Problem ist nun nur noch, dass das Formular zwar verarbeitet wird, nun aber die Rückmeldung vom PHP-Skript fehlt. Wenn die Formularverarbeitung funktioniert hat kann man ja eine Erfolgsmeldung anzeigen lassen "success: function(response) {alert('..');}}); aber wie kann ich nun einen Javaskript-Alert o.Ä. anzeigen lassen, wenn das Captcha falsch war? Geht das irgendwie?

Ich habe auf der Nachricht.php ja eine if-Abfrage, ob das Captcha korrekt ist, aber wie muss man die Rückmeldung auf die eigentliche Seite umsetzen? Oder muss ich dazu alles umbauen und das PHP in die eigentliche Seite integrieren?


JAVASKRIPT-VALIDIERUNG/FORM-VERARBEITUNG MIT AJAX:

Code:
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
<script type="text/javascript">
(function($,W,D)
{
    var JQUERY4U = {};
    JQUERY4U.UTIL =
    {
        setupFormValidation: function()
        {
            $("#kommentar").validate({
                rules: {
                    firstname: "required",
                    .........
                },
                messages: {
                    firstname: "Please enter your firstname",
                    ..........
                },
                submitHandler: function(form)
                    var data = $("#nachricht").serializeArray();
                    $.ajax({
                    type:"POST",
                    url:"nachricht.php",
                    data: data,
                    dataType: "text",
                    success: function(response) {
                    alert('Vielen Dank für Ihre Nachricht!');
                        }
                    });
                }
            });
        }
    }
    $(D).ready(function($) {
        JQUERY4U.UTIL.setupFormValidation();
    });
})(jQuery, window, document);


MEINE PHP-Datei:

PHP:
$email = urlencode($_POST['email']);
$name = urlencode($_POST["name"]);
....

session_start();
if(isset($_SESSION['captcha_spam']) AND $_POST["captchafield"] == $_SESSION['captcha_spam']) // Captcha korrekt
{
    unset($_SESSION['captcha_spam']);
  
$link = "http://www.beispiel.de/index.php?email=" . $email . "&name=" . $name . $titel . "&text=" . $text . "&ranking=" . $ranking . "&captchafield=" . $captcha_s;

header( "refresh:0;url=" . $link);
exit;
....
 
Dem Ajax-Request lässt sich dem Success- auch ein Error-Handler anhängen, und was da in response steht, ist ein zurückgeliefertes Promise-Objekt, das du bsw. mit console.debug() ausgeben kannst.

Lies dir mal die offizielle Doku zu jQuery $.ajax() durch. Das ist sehr einfach zu verstehen.
 
Werbung:
Vielen Dank für deine Antwort, Tronjer!

Aber der success- bzw. error-Handler bezieht sich ja nur auf den Schritt der PHP-Ausführung, oder? Oder auf was bezieht sich dieser Status denn genau? Bin leider in Javaskript sehr unbeholfen und auch nicht wirklich ein PHP-Profi.

Bräuchte ich für das Captcha evtl. einen eigenen AJAX-Request und PHP-Datei?
 
Vergiss dein Captcha für den Moment und setzte sich erstmal mit jQuery Ajax in Form einer einfacheren Funktion auseinander. Was in data steht, schickst du von der HTML-Datei an das PHP-Script und was in response steht, erhältst du vom PHP-Script zurück und kannst es bsw. in Form einer Status-Meldung ausgeben.
 
Also könnte ich die if-Condition zu bspw.

if(eingegebenes_captcha == captcha){
echo "<script type='text/javascript'> alert('captcha_korrekt');</script>";
}else{
echo "<script type='text/javascript'> alert('captcha_nicht_korrekt');</script>";
}

ändern und dann diesen Alert durch "response" zurück holen und dort mit einer if-Abfrage einen "echten" alert() ausgeben?

Den AJAX-Request dann so in etwa?
$.ajax({
type:"POST",
url:"nachricht.php",
data: data,
dataType: "text",
success: function(response) {
if( response == "captcha_korrekt" ){ alert("Success"); } else { alert("unsuccess.."); }
}
});

Wird aber leider immer "unsuccess" ausgegeben..
 
Werbung:
Tut mir sehr leid, dass ich euch Schmerzen bereiten musste :)
Habe das ganze jetzt nochmal umgebaut und auch die Validierung zu jQuery .Validate() umgestellt.
jQuery(function() {

$("form").validate({
rules: ....
messages: ....
},

Und den AJAX-Request in den submitHandler verschoben:

submitHandler: function(form) {
$.ajax({
url: form.action,
type: form.method,
data: $(form).serialize(),
}).done(function (data) {
document.getElementById("status").innerHTML = data;
document.getElementById("statusanzeige").style.display = "block";
}).fail(function() {
alert("Fehler beim Versenden....");
})
}

Um dann über .done das PHP-Feedback auszugeben.

Hat so jetzt perfekt funktioniert, danke für eure Hilfe.
 
Hallo,

hätte nun doch noch einmal eine Frage zu der Thematik (unabhängig von Validierung, Captcha etc).

Und zwar war die ursprüngliche Frage ja, wie sich die Formulardaten "versteckt" mit der GET-Methode an eine andere URL / Datei senden lassen. Kann das hier so funktionieren?
Captcha wird validiert und dann erfolgt der Header-Redirect, womit die Daten dann an die URL geschickt werden. Funktioniert das so oder wird der Durchlauf der PHP-Datei von AJAX bei der echo "Erfolgreich .. "-Stelle abgebrochen?

PHP:
    $name = urlencode($_POST['name']);
   (...)

    session_start();
    if(isset($_SESSION['captcha_spam']) AND $captchafield == $_SESSION['captcha_spam'])
{
    unset($_SESSION['captcha_spam']);
  
    $aufruf = "http://www.zielurl.de/zieldatei.jsp?name=" . $name . "&email=" . $email;
  
    echo "Erfolgreich abgeschickt";
  
    header("Location:" . $aufruf);  
    exit; 
      
} else {

    echo "Der Sicherheitscode ist leider nicht korrekt. Bitte versuchen Sie es erneut.";

}

Oder ist es mit dieser Methode besser?

function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}

var url = "zieldatei.jsp";
var params = "fname=test&lname=test2";
xmlhttp.open("GET", url + "?" + params,true);
xmlhttp.send();
 
Zuletzt bearbeitet:
Werbung:
Zurück
Oben