2013-06-17 18 views
22

मैंने सबमिट किए जाने के बाद उपयोगकर्ता को किसी अन्य URL पर रीडायरेक्ट करने के लिए शीर्षलेखों को एक php फॉर्म फ़ाइल में डालने के बारे में अपनी सभी पोस्ट पढ़ी हैं - लेकिन मैं यह नहीं समझ सकता कि कैसे करना है यह। नीचे मेरा कोड है। क्या आप मुझे दिखा सकते हैं कि हेडर/रीडायरेक्ट कहां रखा जाए ताकि जानकारी ई-मेल हो और फिर उपयोगकर्ता किसी अन्य एचटीएमएल पेज पर जा सके?PHP सबमिट करने के बाद किसी अन्य पृष्ठ पर रीडायरेक्ट

<?php 
    if(isset($_POST['email'])) { 

    // EDIT THE 2 LINES BELOW AS REQUIRED 
    $email_to = "[email protected]"; 
    $email_subject = "Mailing List Form"; 

    function died($error) { 
     // your error code can go here 
     echo "We are very sorry, but there were error(s) found with the form you 
     submitted. "; 
     echo "These errors appear below.<br /><br />"; 
     echo $error."<br /><br />"; 
     echo "Please go back and fix these errors.<br /><br />"; 
     die(); 
    } 

    // validation expected data exists 
    if(!isset($_POST['first_name']) || 
     !isset($_POST['last_name']) || 
     !isset($_POST['email']) || 
     !isset($_POST['telephone']) || 
     !isset($_POST['company']) || 
     !isset($_POST['street']) || 
     !isset($_POST['city']) || 
     !isset($_POST['state']) || 
     !isset($_POST['zip'])) { 
     died('We are sorry, but there appears to be a problem with the form you 
    submitted.');  
    } 

    $first_name = $_POST['first_name']; // required 
    $last_name = $_POST['last_name']; // required 
    $email_from = $_POST['email']; // required 
    $telephone = $_POST['telephone']; // required 
    $company = $_POST['company']; // required 
    $street = $_POST['street']; // required 
    $city = $_POST['city']; // required 
    $state = $_POST['state']; // required 
    $zip = $_POST['zip']; // required 

    $error_message = ""; 
    $string_exp = "/^[A-Za-z0-9 .'-]+$/"; 
    if(!preg_match($string_exp,$first_name)) { 
    $error_message .= 'The First Name you entered does not appear to be valid.<br />'; 
    } 
    if(!preg_match($string_exp,$last_name)) { 
    $error_message .= 'The Last Name you entered does not appear to be valid.<br />'; 
    } 
    $email_exp = '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; 
    if(!preg_match($email_exp,$email_from)) { 
    $error_message .= 'The Email Address you entered does not appear to be valid.<br />'; 
    } 
    if(!preg_match($string_exp,$company)) { 
    $error_message .= 'The Company you entered does not appear to be valid.<br />'; 
    } 
    if(!preg_match($string_exp,$street)) { 
    $error_message .= 'The Street you entered does not appear to be valid.<br />'; 
    } 
    if(!preg_match($string_exp,$city)) { 
    $error_message .= 'The City you entered does not appear to be valid.<br />'; 
    } 
    if(!preg_match($string_exp,$state)) { 
    $error_message .= 'The State you entered does not appear to be valid.<br />'; 
    } 
    if(!preg_match($string_exp,$zip)) { 
    $error_message .= 'The Zip Code you entered does not appear to be valid.<br />'; 
    } 
    if(strlen($error_message) > 0) { 
    died($error_message); 
    } 
    $email_message = "Response from Mailing List Page. Please enter in database.\n\n"; 

    function clean_string($string) { 
     $bad = array("content-type","bcc:","to:","cc:","href"); 
     return str_replace($bad,"",$string); 
    } 

    $email_message .= "First Name: ".clean_string($first_name)."\n"; 
    $email_message .= "Last Name: ".clean_string($last_name)."\n"; 
    $email_message .= "Email: ".clean_string($email_from)."\n"; 
    $email_message .= "Telephone: ".clean_string($telephone)."\n"; 
    $email_message .= "Company: ".clean_string($company)."\n"; 
    $email_message .= "Street: ".clean_string($street)."\n"; 
    $email_message .= "City: ".clean_string($city)."\n"; 
    $email_message .= "State: ".clean_string($state)."\n"; 
    $email_message .= "Zip: ".clean_string($zip)."\n"; 


// create email headers 
$headers = 'From: '.$email_from."\r\n". 
'Reply-To: '.$email_from."\r\n" . 
'X-Mailer: PHP/' . phpversion(); 
@mail($email_to, $email_subject, $email_message, $headers); 

?> 

<!-- include your own success html here --> 

Thanks for subscribing to our mailing list 



<?php 
} 
?> 
+1

कोई जवाब नहीं है, लेकिन कृपया एक और तरीका चुनें [ईमेलड्रेस को सत्यापित करने के लिए] (http://stackoverflow.com/questions/12026842/how-to-validate-an-email-address-in-php/12026863#12026863) । – PeeHaa

+1

'हेडर रखें (" स्थान: thank_you_page.php ");' @mail ($ email_to, $ email_subject, $ email_message, $ शीर्षलेख) के बाद; 'और अपनी पसंद के संदेश के साथ 'thank_you_page.php' बनाएं। –

उत्तर

3

आप भी आप की तरह जब तक कोई HTML और/या पाठ के रूप में बाहर मानक के मुद्रित किया गया है अपने हैडर समारोह में शामिल कर सकते हैं।

अधिक जानकारी और उपयोग के लिए: http://php.net/manual/en/function.header.php


मैं अपने कोड है कि आप त्रुटि या सफलता के मामले में कुछ पाठ बाहर echo() में देखते हैं। ऐसा मत करो: आप नहीं कर सकते। आप केवल रीडायरेक्ट कर सकते हैं या टेक्स्ट दिखा सकते हैं। यदि आप टेक्स्ट दिखाते हैं तो आप रीडायरेक्ट करने में असफल हो जाएंगे।

+0

सही! मैं उस सफलता संदेश को रीडायरेक्ट के साथ बदलना चाहता हूं। क्या मैं इसे रख सकता हूं जहां सफलता संदेश है? – user2494737

+0

... लेकिन अगर हमें दोनों को करने की ज़रूरत है तो क्या होगा? पृष्ठ पर पाठ को पुनर्निर्देशित और प्रदर्शित करना संभव नहीं है? यह बहुत भ्रमित है। मुझे लगता है कि मैं इसके बारे में हर उत्तर को इतना स्पष्ट नहीं कर सकता हूं। –

+0

यदि आप उपयोगकर्ता को दूसरे पृष्ठ पर रीडायरेक्ट कर रहे हैं तो आप संभवतः टेक्स्ट कैसे दिखा सकते हैं? यह पूछने की तरह है "मैं कैसे मर सकता हूं और एक किताब पढ़ सकता हूं?"। आप या तो मर जाते हैं और पढ़ नहीं सकते हैं या पढ़ सकते हैं और मौत नहीं हो सकते हैं। आप कुछ दिखा सकते हैं और ** फिर ** उपयोगकर्ता को रीडायरेक्ट कर सकते हैं (कुछ समय बीतने के बाद), लेकिन ऐसा कुछ नहीं है जो सर्वर-साइड किया जा सकता है। सर्वर पेज, अवधि परोसता है। आप कुछ जावास्क्रिप्ट के साथ पेज की सेवा कर सकते हैं जो रीडायरेक्ट करने के लिए निर्देश देता है। यदि आपको यह भ्रमित करने वाला लगता है, तो आपको क्लाइंट-सर्वर इंटरैक्शन का अध्ययन और समझना होगा और ब्राउज़र/इंटरनेट कैसे काम करता है। – Saturnix

0

जब भी आप रीडायरेक्ट करना चाहते हैं, हेडर भेजें:

header("Location: http://www.example.com/"); 

याद रखें कि आप नहीं कर सकते डेटा ग्राहक के लिए उससे पहले, हालांकि भेजें।

+0

यह बस है - मैं एक कोडिंग क्लुट हूं और मुझे पता होना चाहिए कि मेरे कोड उदाहरण में हेडर को कहां रखा जाए। धन्यवाद – user2494737

+0

टैग में, हमारी मेलिंग सूची की सदस्यता लेने के लिए धन्यवाद के बजाय धन्यवाद। – Frildoren

+0

क्लाइंट को डेटा भेजने के बाद इसका उपयोग कभी भी शीर्षलेख का उपयोग नहीं किया जा सकता है? क्या हमें उस फॉर्म को बनाने के लिए डेटा नहीं भेजना है जिसका उपयोग वे पहले स्थान पर पुनः लोड करने के लिए कर रहे हैं? –

47

ठीक बाद @mail($email_to, $email_subject, $email_message, $headers);

header('Location: nextpage.php'); 

ध्यान दें कि आप 'धन्यवाद हमारे मेलिंग सूची के लिए सदस्यता लेने के लिए' कभी नहीं देखेंगे

कि अगले पन्ने पर होना चाहिए, अगर आप किसी भी पाठ गूंज आप एक मिल जाएगा त्रुटि क्योंकि हेडर पहले से ही बनाए गए होंगे, अगर आप रीडायरेक्ट करना चाहते हैं तो कभी भी कोई टेक्स्ट न भेजें, यहां तक ​​कि एक जगह भी नहीं!

+0

ग्रेट !!!!! यह काम किया - बहुत बहुत धन्यवाद। – user2494737

+0

मुझे खुशी है, कृपया उत्तर देने और उत्तर स्वीकार करने के लिए मत भूलना। धन्यवाद – multimediaxp

+0

एडी - मैं यहां नया ब्रांड हूं - यह पता नहीं लगा सकता कि यह कहां करें :) – user2494737

6

यदि आपका रीडायरेक्ट PHP में है, तो रीडायरेक्ट निर्देश से पहले उपयोगकर्ता को कुछ भी प्रतिबिंबित नहीं किया जाना चाहिए।

अधिक जानकारी के लिए header देखें।

कि शीर्ष लेख (याद रखें) बुलाया जाना चाहिए किसी भी वास्तविक उत्पादन भेजे जाने से पहले, या तो सामान्य HTML टैग, एक फ़ाइल में रिक्त लाइनों से, या PHP

अन्यथा से, रीडायरेक्ट करने जावास्क्रिप्ट का उपयोग कर सकते उपभोक्ता।

बस

window.location = "http://www.google.com/" 
5

का उपयोग सबसे पहले अपने इनपुट प्रकार इस name='submitform' की तरह एक नाम भेजते हैं तो दे।

और फिर अपने php फ़ाइल में इस डाल

if (isset($_POST['submitform'])) 
    { 
    ?> 
<script type="text/javascript"> 
window.location = "http://www.google.com/"; 
</script>  
    <?php 
    } 

मत भूलना तुम्हारा करने के लिए यूआरएल को बदलने के लिए।

संबंधित मुद्दे

 संबंधित मुद्दे