2012-08-03 17 views
12

मुझे उपयोगकर्ता के फॉर्म को सबमिट करने पर Aweber से GET स्ट्रिंग में मान प्राप्त हो रहा है। मैं उन्हें भेजे गए वेरिएबल्स लेता हूं और उन्हें टेक्स्ट मैसेज द्वारा जमा करने की तीसरी पार्टी को सूचित करने के लिए एसएमएस गेटवे पर सबमिट करता हूं।एक PHP शीर्षलेख रीडायरेक्ट के माध्यम से GET स्ट्रिंग में प्राप्त चर को कैसे पास करें?

यहां मेरी समस्या है। मुझे उस पृष्ठ को रीडायरेक्ट करने की आवश्यकता है जो आउटगोइंग एसएमएस कमांड को किसी अन्य पृष्ठ पर एक PHP शीर्षलेख में निष्पादित करता है जो अंततः अवेबर से भेजे गए GET चर प्रदर्शित करता है।

मैं पहले पृष्ठ में चर और उनके मान पुनर्प्राप्त कर सकता हूं। मैं उन्हें दूसरे पृष्ठ पर कैसे पास करूं?

$_SESSION['fname'] = $_GET['name']; 

उपयोग: session में

$fname = $_GET['name']; 
    $femail = $_GET['email']; 
    $fphone = $_GET['telephone']; 
    ....etc 

    header('Location: confirmed.php'); 
    exit; 

उत्तर

15
session_start(); 
$_SESSION['fname'] = $_GET['name']; 
$_SESSION['femail'] = $_GET['email']; 
$_SESSION['fphone'] = $_GET['telephone']; 
....etc 

header('Location: confirmed.php'); 

और की तरह इसे अगले पृष्ठ पर मिलती है:

session_start(); 
$fname = $_SESSION['fname']; 
$femail = $_SESSION['femail']; 
$fphone = $_SESSION['fphone']; 

.... आदि

+1

एक आकर्षण की तरह काम करता है! यद्यपि @ यैन ने मूल रूप से वही सुझाव दिया है, मैं आपकी विस्तृत व्याख्या (जिसने इस नौसिखिए की मदद की;) – user1322707

+2

या सिर्फ '$ _SESSION ['get'] = $ _GET;' – rybo111

2

स्टोर उन्हें:

यहाँ कोड मैं पहले पृष्ठ पर उपयोग कर रहा हूँ (sms.php) चर Aweber द्वारा भेजे गए इकट्ठा करने के लिए है प्रत्येक फ़ाइल की शुरुआत में session_start

11

आप उन्हें एक सत्र में स्टोर करने के लिए की जरूरत नहीं है, आप आसानी से उन लोगों के साथ पारित कर सकते हैं आपका स्थान शीर्षलेख:

$fname = $_GET['name']; 
$femail = $_GET['email']; 
$fphone = $_GET['telephone']; 
//now a header with these var's: 
header("Location: confirmed.php?name=".$fname."&email=".$femail."&telephone=".$fphone); 

पुष्टि.php में आप इन चरों को $ _GET विधि के साथ प्राप्त कर सकते हैं।

+0

हम्म, मैंने यहां प्रश्न पोस्ट करने से पहले इस समाधान की कोशिश की GET स्ट्रिंग – user1322707

+0

में वास्तविक मान के बजाय, इसे echoing करते समय confirm.php पृष्ठ पर मुझे '$ fname' मिला था। क्या आप इसमें PHP के कोड को हेडर ("स्थान ...) में पोस्ट कर सकते हैं और पुष्टि की है .php जहां आप इसे गूंजने की कोशिश कर रहे थे? –

+0

मैं वही '$ fname = $ _ GET ['name'] का उपयोग कर रहा था; दोनों पृष्ठों में पैरामीटर दोनों स्ट्रिंग्स के पैरामीटर समान थे, यानी 'name = value' – user1322707

24

पहले एक क्वेरी स्ट्रिंग का उपयोग कर

$query = http_build_query($_GET); 

तो आपकी रीडायरेक्ट हैडर

header('location: domain.com'."?".$query); 

हो गया करने के लिए क्वेरी स्ट्रिंग चर संलग्न में $_GET HTTP चर परिवर्तित।

+0

यदि आपके पास '? Value = 4% 2e20' है तो इसे '? Value = 4.20' में बदल दिया जाएगा। और बाद में '$ _POST ['राशि_value'] == 4.20' यह झूठी वापसी करेगा। –

+0

इसके बारे में कैसे: '$ query = urlencode (http_build_query ($ _ GET));' –

2

कृपया भविष्य में इसे पढ़ने वाले किसी भी व्यक्ति के लिए, इस तरह के परिवर्तनीय मूल्य हस्तांतरण के लिए सत्रों का उपयोग करें क्योंकि यदि आप अधिकतर हेडर में चर जोड़ने पर भरोसा करते हैं तो यदि उपयोगकर्ता अभी भी उस फॉर्म पर है और उस क्रिया को पूरा करता है जो मूल्य को बदलता है हेडर तब आपके स्वयं के परिवर्तनीय मान में परिवर्तन होता है क्योंकि यह हेडर पर निर्भर करता है ...... बस शब्दों का उपयोग करें।

1
सबसे अच्छा आप कर सकते हैं इस तरह की एक सत्र के लिए अपने सभी पोस्ट चर डाल दिया है

:

page1.php डाल पर:

//Start the session 
session_start(); 
//Dump your POST variables 
$_SESSION['post-data'] = $_POST; 

और page2.php डाल पर: (page1.php हम एक सामान्य पोस्ट फार्म का उपयोग पर तो प्रपत्र action="page2.php ")

//Start the session 
session_start(); 
//Access your POST variables 
foreach ($_POST as $key => $value) { 
    ${$key} = $value; 
    $_SESSION[$key] = $value; 
} 
//Unset the useless session variable 
unset($_SESSION['post-data']); 
साथ प्रस्तुत 210

या पेज 2.php पर रखें: (यदि पेज 1 पर है।php हम एक स्वयं का उपयोग प्रपत्र action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?> साथ प्रस्तुत और फिर एक header("Location: page2.php"); का उपयोग एक सत्र)

//Start the session 
session_start(); 
//Access your POST variables 
$_POST = $_SESSION['post-data']; 
foreach ($_POST as $key => $value) { 
    ${$key} = $value; 
    $_SESSION[$key] = $value; 
} 
unset($_SESSION['post-data']); 

मैं सचमुच में घंटों खर्च करते कि पता लगाना के माध्यम से page2.php में ले जाएँ और हमारे पोस्ट चर पारित करने के लिए है क्योंकि सभी मंचों इसे गलत या अधूरा रखो।

अब यह पृष्ठ 1.php से पारित चर को कॉल करने जितना आसान है उदाहरण के लिए: <b>Points: </b><?php echo $points; ?> और यह है !!

header('Location: page2.php'); को if स्थिति में इत्यादि करते समय, सुनिश्चित करें कि यह पृष्ठ की पहली PHP स्क्रिप्ट और किसी भी HTML आउटपुट से ऊपर होगा।

0

यह काम करता है इस sentex का उपयोग

हैडर ('स्थान: member_dashboard.php आईडी =?' $ आईडी।);

2

इस (यह पूरी तरह से काम किया, अपने प्रयोग के लिए) का प्रयास करें:

if ($_GET) 
    { 
     $query = str_replace("%3D", "=", str_replace("%26", "&", strval(urlencode(http_build_query($_GET))))); 

     header('location: https://www.example.com'.'?'.$query); 
    } 
else 
    { 
     header('location: https://www.example.com'); 
    }; 

इस काम करता है, तो आप के लिए भी, वोट दें करने के लिए कृपया याद रखें!

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