ไฟล์ PHP ที่เปิดโดย AJAX - ให้การแจ้งเตือน Captcha และส่ง url-data

นั่งอยู่บนนี้ทั้งวันถ้าคุณเชื่อหรือไม่ :) ฉันต้องการถ่ายโอนข้อมูลผ่าน GET-Method ไปยังไฟล์ .jsp ภายนอก (example.com/data.php?attribute=value&a2=v2 และอื่นๆ)

ดูเหมือนว่าทั้งหมดนี้ใช้งานได้และยังมีการตรวจสอบด้วย ตอนนี้ฉันมีปัญหาที่ฉันมี captcha ซึ่งสร้างโดยไฟล์ php และ captcha ถูกควบคุม/ตรวจสอบในไฟล์ PHP ซึ่งมีการโพสต์ข้อมูลแบบฟอร์ม HTML ไป

เมื่อทุกอย่างเรียบร้อย ฉันสามารถแจ้งเตือนใน sendHandler (สำเร็จ: ฟังก์ชั่น (ตอบกลับ)) ได้ แต่ฉันจะได้รับการแจ้งเตือนตอนนี้ได้อย่างไร หาก Captcha ไม่ถูกต้อง

ฉันจะแก้ปัญหานี้ได้อย่างไร? ฉันสามารถรับค่าอื่น ๆ ของตัวแปรผ่าน AJAX กลับจากไฟล์ PHP เพื่อทำอะไรกับมัน (เพื่อแสดงการแจ้งเตือน) ได้หรือไม่

จะดีใจมากสำหรับความช่วยเหลือหรือความคิดเห็นใด ๆ

ขอบคุณ!

ที่นี่ ข้อมูลได้รับการตรวจสอบและส่งไปยังไฟล์ PHP หลังจากการตรวจสอบสำเร็จ

<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()
        {
            $("#form-id").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('Thank you!');
                        }
                    });
                }
            });
        }
    }
    $(D).ready(function($) {
        JQUERY4U.UTIL.setupFormValidation();
    });
})(jQuery, window, document);

ไฟล์ PHP: ที่นี่ข้อมูลจะถูกถ่ายโอนไปยัง URL อื่น (GET-Method) และ Captcha จะถูกตรวจสอบ

$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.example.com/data.jsp?email=" . $email . "&name=" . $name . $titel . "&text=" . $text . "&ranking=" . $ranking . "&captchafield=" . $captcha_s;

header( "refresh:0;url=" . $link);
exit;
....

person Jobo21    schedule 04.02.2015    source แหล่งที่มา
comment
ทำไมคุณถึงทำการรีเฟรชใน php?   -  person Tamás Szabó    schedule 05.02.2015
comment
คุณหมายถึงส่วนหัว()? ฉันใช้เพื่อส่งข้อมูลด้วยผ่าน GET ไปยังไฟล์ jsp บนเซิร์ฟเวอร์อื่น ..   -  person Jobo21    schedule 05.02.2015
comment
ใช่. ฉันทำ. เหตุใดจึงจำเป็น?   -  person Tamás Szabó    schedule 05.02.2015
comment
สำหรับการถ่ายโอนข้อมูลไปยังเซิร์ฟเวอร์อื่น ก่อนอื่นฉันต้องการใช้ cURL แต่ฉันไม่มีสิทธิ์เข้าถึงเซิร์ฟเวอร์ด้วยไฟล์ jsp และจะไม่สามารถรับรายงานข้อผิดพลาดใด ๆ ถ้ามันไม่ทำงาน ตอนนี้ฉันถ่ายโอนข้อมูลผ่าน AJAX ไปยังไฟล์ PHP และเปิด URL ด้วยตนเองโดยมีตัวแปร GET อยู่ ขอบคุณสำหรับคำตอบของคุณ!   -  person Jobo21    schedule 05.02.2015
comment
และมันทำอะไรในบริบทนี้? สิ่งนี้จะเปลี่ยนเส้นทางคำขอ ajax ไปยังไฟล์ jsp หรือไม่   -  person Tamás Szabó    schedule 05.02.2015
comment
ไม่ ไม่ควรเปลี่ยนเส้นทางคำขอ AJAX เนื่องจากมีไว้เพื่อประมวลผลข้อมูลแบบฟอร์ม (และส่งไปยังไฟล์ jsp) โดยที่ผู้ใช้ไม่ได้ออกจากหน้า และในไฟล์ PHP นั้น captcha ได้รับการตรวจสอบความถูกต้องแล้ว ดังนั้นฉันจึงต้องการทราบว่าจะรับข้อมูลกลับคืนได้อย่างไร หากป้อน captcha ไม่ถูกต้อง   -  person Jobo21    schedule 05.02.2015
comment
จากนั้นก็สะท้อนบางสิ่งบางอย่าง ฉันหมายถึง if( ... captcha ok ... ) ให้สะท้อน Success; อย่างอื่นสะท้อนล้มเหลว; และตรวจสอบพารามิเตอร์การตอบสนองในการดำเนินการที่สำเร็จ   -  person Tamás Szabó    schedule 05.02.2015
comment
ฉันมีเงื่อนไข if อยู่แล้ว แต่ปัญหาคือ สิ่งนี้ไม่แสดงขึ้นมา $_POST[captchafield] == $_SESSION['captcha_spam']) Captcha ถูกต้อง { ... ถูกต้อง } else { echo failed .. }   -  person Jobo21    schedule 05.02.2015
comment
คุณต้องจัดการมันในด้านจาวาสคริปต์   -  person Tamás Szabó    schedule 05.02.2015
comment
คุณหมายถึงระหว่างการตรวจสอบทุกช่องและการส่งคำขอ AJAX ควรมีการตรวจสอบความถูกต้องของ Captcha หรือไม่ ฉันจะรวมสิ่งนี้ไว้ในจาวาสคริปต์ได้อย่างไร ด้วยคำขอ AJAX อื่นหรือไม่   -  person Jobo21    schedule 05.02.2015
comment
ไม่ ไม่ คุณเข้าใจฉันผิด คุณช่วยวาง php ทั้งหมดของคุณได้ไหม หรือถ้ามันยาวก็จะมีเฉพาะคำสั่งของ captcha check และอย่างอื่นเท่านั้น   -  person Tamás Szabó    schedule 05.02.2015
comment
ในไฟล์ PHP ที่ถูกเปิดหลังจากส่งแบบฟอร์มจะมีเพียงเนื้อหา PHP จากด้านบนแล้ว .. echo ..success..; } else { echo ...ล้มเหลว..; }. ใน captcha-PHP-File มีการสร้างเซสชันและสตริง captcha หรือคุณหมายถึงอะไร? ขอบคุณสำหรับความช่วยเหลือ   -  person Jobo21    schedule 05.02.2015
comment
หาก php ทำงานได้ดี และตรวจสอบ captcha และไปที่ไฟล์ jsp และรันมัน คุณก็ไม่จำเป็นต้องแตะมัน ในจาวาสคริปต์ คุณมี success: function( response ) คำตอบคือสิ่งที่มาจาก php ดังนั้น เช่น ...ความสำเร็จ... คุณสามารถตรวจสอบสิ่งนี้ได้ และข้อความแจ้งเตือนตามค่าของ response   -  person Tamás Szabó    schedule 05.02.2015
comment
ตกลง ดังนั้นเมื่อฉันทำในไฟล์ PHP เช่น: if(enteredcaptcha == captcha){ $captcha_correct = true; } อื่น ๆ { $captcha_correct = false; } ฉันจะตรวจสอบสิ่งนี้ในการตอบกลับและดำเนินการแจ้งเตือน () ได้อย่างไร   -  person Jobo21    schedule 05.02.2015
comment
นี้ไม่มีทาง. แต่ถ้าคุณทำ echo captcha_correct; หากสำเร็จ คุณสามารถตรวจสอบได้ในจาวาสคริปต์ด้วยวิธีนี้: if( response == captcha_correct ) alert(Success); else { การแจ้งเตือน (ไม่สำเร็จ..); }   -  person Tamás Szabó    schedule 05.02.2015


คำตอบ (1)


ตกลง ตอนนี้ฉันมีไฟล์ PHP ที่ส่งแบบฟอร์มไปที่:

if(enteredcaptcha == captcha){
echo "<script type='text/javascript'> alert('captcha_correct');</script>";  
} else { 
echo "<script type='text/javascript'> alert('captcha_not_correct');</script>";  
}

และในไฟล์ HTML ปกติของฉันซึ่งฉันมีแบบฟอร์มและ Javascript:

submitHandler: function(form) {
                    var data = $("#kommentar").serializeArray();
                    $.ajax({
                    type:"POST",
                    url:"kommentar.php",
                    data: data,
                    dataType: "text",
                    success: function(response) {
                    if( response == "captcha_is_correct" ){ alert("Success"); } else { alert("unsuccess.."); }
                        }
                    });

                }

และนี่สมเหตุสมผลจริงๆ ยอดเยี่ยมมาก แต่ฉันมักจะได้รับข้อความว่า "ไม่สำเร็จ" ดังนั้นฉันคิดว่ายังมีข้อบกพร่องอยู่หรือเปล่า?

person Jobo21    schedule 04.02.2015