2014-10-31 8 views
6

मैं $_SESSIONS पर नया हूं लेकिन इसे विभिन्न php फ़ाइलों के बीच चर का पुन: उपयोग करने की आवश्यकता है। नीचे दिए गए कोड में मैं एक और php फ़ाइल में परिवर्तनीय $word का उपयोग करना चाहता हूं, लेकिन मुझे यह सुनिश्चित नहीं है कि यह कैसे करें।विभिन्न php फ़ाइलों के बीच सत्र चर का उपयोग करें

मेरे php फ़ाइल इस तरह दिखता है:

<?php 
    if (isset($_POST["search"])) {  

    //include database connection 

$word = mysql_real_escape_string($_POST["search"]); 
$word = htmlentities($word); 

$sql = ("SELECT task_id, task_date FROM customer JOIN task ON customer.id = task.customer_id WHERE mobil = $word ORDER BY task_date DESC LIMIT 0, 10"); 

$results = mysql_query($sql); 
if (mysql_num_rows($results)==0) { 
    echo $word, " text bla"; 
}else { 
    echo $word, " text bla bla"; 
    while ($row = mysql_fetch_assoc($results)) { 
    echo '<pre>', print_r($row), '<pre>'; 
    } 
    } 
}?> 

अपने सुझाव के लिए आगे देख रहे हैं।


--- अद्यतन सत्र अभी भी page2.php पर काम नहीं कर? ---

मुझे समझ में नहीं आता क्यों $_SESSION काम नहीं करते हैं। एक page1.php मैं echo($_SESSION['word']) कर सकते हैं और सही मान मिलता है, लेकिन एक page2.php मैं ('$'."_SESSION['word'] isn't set because you had never been at file one");

मैं सभी के लिए निम्न उपाय परीक्षण किया पाने लेकिन उनमें से कोई page2.php पर = एक ही परिणाम में काम किया।

मेरा पृष्ठ 1.php फ़ाइल।

<?php 
session_start(); 

//if we got something through $_POST 
    if (isset($_POST["search"])) { 

    // include database connection 
     $connect = mysql_connect('localhost', 'root', 'NomiS123') or die(mysql_error()); 
     mysql_select_db('workcard'); 

    // sanitize user input 
     $word = mysql_real_escape_string($_POST["search"]); 
     $word = htmlentities($word); 

    // build search query to the database 
     $sql = ("SELECT task_id, task_date FROM customer JOIN task ON customer.id = task.customer_id WHERE mobil = $word ORDER BY task_date DESC LIMIT 0, 10"); 

     // get results 
     $_SESSION['word'] = $word; 
     $results = mysql_query($sql); 
     if (mysql_num_rows($results)==0) { 
      $_SESSION['word'] = $word; 
      echo($_SESSION['word']. "<br>"); 
      var_dump($_SESSION); 
      echo "<br>"; 
      echo "link link <br>"; 
      echo "<a href=\"../page2.php/\">new card</a> <br>"; 
      echo "<a href=\"//cykelc/\">New Search</a>"; 
     } else { 
       echo $word, " bla bla text <br> Create card <br>"; 
       echo "Edit info on: ", $word, "<br>"; 
       echo "<a href=\"//cykelc/\">New Search</a> <br>"; 

       while ($row = mysql_fetch_assoc($results)) { 
        echo '<pre>', print_r($row), '<pre>'; 
        } 
        //$results->free(); 
      } 
     } 
// mysql_close($connect); 
?> 

मेरे PAGE2.php फ़ाइल।

<?php 
session_start(); 
if(isset($_SESSION['word'])) { 
    $word = $_SESSION['word']; 
    echo($word); 
} else { 
    die('$'."_SESSION['word'] isn't set because you had never been at file one"); 
} 
?> 

मैं इस पर पागल हो रहा हूं।


अद्यतन - हल
मैं सभी नीचे दिए गए सुझावों का परीक्षण किया, लेकिन उनमें से कोई भी काम जो अजीब था, क्योंकि मैं सेट और page1.php और page2.php पर sesson_id() बाहर गूंज सकता है, लेकिन पृष्ठ 2 पर। php मुझे एक अलग sesson_id() मिला। मैंने अपनी एमएएमपी सत्र सेटिंग्स में देखना शुरू किया, लेकिन सब कुछ सही सेट था। समाधान पृष्ठ 2.php पर बहुत ऊपर session_start(); रखने के लिए "बस" था। और से बहुत ऊपर मैंने पहले सब कुछ भी <!DOCTYPE html> आदि
हल + सबक सीखा :-)

+1

आप गूगल में प्रतिबंध लगा दिया है? http://php.net/manual/en/session.examples.basic.php http://www.tizag.com/phpT/phpsessions.php – Cheery

+1

कृपया, [mysql_ * 'functions] का उपयोग न करें (http : //stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php), वे अब बनाए रखा नहीं जा रहे हैं और [आधिकारिक रूप से बहिष्कृत हैं] (https://wiki.php.net/ आरएफसी/mysql_deprecation)। इसके बजाय [तैयार बयान] (http://en.wikipedia.org/wiki/Prepared_statement) के बारे में जानें, और [पीडीओ] (http://us1.php.net/pdo) या [MySQLi] का उपयोग करें (http: // us1.php.net/mysqli)। [यह आलेख] (http://php.net/manual/en/mysqlinfo.api.choosing.php) आपको निर्णय लेने में मदद करेगा। –

+0

@ चेरी I (हमेशा और) पहले से ही PHP मैनुअल के आधार पर पढ़ और परीक्षण कर चुके हैं। लेकिन यह काम नहीं कर सका। – Nomis

उत्तर

2

सबसे पहले आप सीधे उद्घाटन पीएचपी 'टैग' (<?php session_start();... ?>)

तो फिर तुम सत्र के लिए अपने चर सहेजना चाहिए के बाद session_start(); के माध्यम से seesion शुरू करनी चाहिए। इस उद्देश्य के लिए आप $_SESSION['word'] = $word; का उपयोग कर सकते हैं।

और दूसरी फ़ाइल में आपको 'टैग' के बाद सबसे पहले session_start(); का भी उपयोग करना होगा।

फिर आप $word = $_SESSION['word']; के माध्यम से पुराने चर का उपयोग कर सकते हैं।

अब आप दूसरी फ़ाइल में $word का भी उपयोग कर सकते हैं। लेकिन अगर आप इसे सेट करते हैं तो आप इसका उपयोग कर सकते हैं (और आप पहले फाइल पर पहले)।

फ़ाइल एक:

<?php 
session_start(); 
    if (isset($_POST["search"])) {  

    //include database connection 

$word = mysql_real_escape_string($_POST["search"]); 
$word = htmlentities($word); 
$_SESSION['word'] = $word; 

$sql = ("SELECT task_id, task_date FROM customer JOIN task ON customer.id = task.customer_id WHERE mobil = $word ORDER BY task_date DESC LIMIT 0, 10"); 

$results = mysql_query($sql); 
if (mysql_num_rows($results)==0) { 
    echo $word, " text bla"; 
}else { 
    echo $word, " text bla bla"; 
    while ($row = mysql_fetch_assoc($results)) { 
    echo '<pre>', print_r($row), '<pre>'; 
    } 
    } 
}?> 

फ़ाइल दो:

<?php 
session_start(); 
if(isset($_SESSION['word'])) { 
    $word = $_SESSION['word']; 
} else { 
    die('$'."_SESSION['word'] isn't set because you had never been at file one"); 
} 
echo $word; 
?> 

आशा इस मदद करता है;) PHP फ़ाइल की शुरुआत में

+0

मैंने आपके सुझाव का परीक्षण किया, लेकिन पहले यह काम नहीं किया। बाहर निकलता है मुझे बस अपनी पेज 2.एफपी फ़ाइल पर ' 'जगह चाहिए। सबसे पहले मेरा मतलब है < <मेटा http-equiv = "सामग्री-प्रकार" सामग्री = "टेक्स्ट/एचटीएमएल; charset = utf-8"> आदि। – Nomis

2

पीएचपी सत्रों का उपयोग करने के लिए आपको क्या करना होगा मतलब है:

सत्र आरंभ करें, session_start();

नोट:session_start(); आपकी फ़ाइल में PHP की पहली पंक्ति होना चाहिए।

सत्र बनाएँ, $_SESSION['word'] = $word;

अन्य पृष्ठ पर यह पहुंचने के लिए:

सत्र आरंभ करें, session_start();

पहुँच सत्र, $word = $_SESSION['word'];

0

session_start() मतलब है कि आप सत्र चर का उपयोग कर रहे , सुनिश्चित करें कि यह पृष्ठ के शीर्ष पर है। एक सत्र बनाने के लिए आप: $_SESSION['word'] = [some value]।इसका उपयोग पृष्ठों के बीच तब तक किया जा सकता है जब तक आपके पास session_start() शीर्ष पर हो। यह सुनिश्चित करना सुनिश्चित करें कि यह पहले सेट है, अगर यह प्रारंभिक सेट नहीं है।

<?php session_start(); ?> 

... 

<?php 
    if (isset($_SESSION['word'])) { 
     $_SESSION['word'] = /* change existing session value */; 
    } else { 
     $_SESSION['word'] = /* new session value */; 
    } 
?> 
0

आप सभी को 'session_start()' फ़ंक्शन का उपयोग करके सत्र शुरू करना चाहिए। इसे अपने index.php/bootstrap.php में रखें (एक फ़ाइल जो हमेशा आपकी वेबसाइट लोड करते समय लोड होती है)।

उसके बाद, आप डेटा सेट करने के लिए '$ _SESSION' वैश्विक का उपयोग कर सकते हैं।

//In your index.php/boostrap.php 
session_start(); 

फ़ाइल आप $ शब्द सहेजना चाहते हैं:

$_SESSION['myword'] = $word; 

और उस बिंदु से आप एक और पेज पर इस चर का उपयोग कर सकते हैं।

//On another page, after the variable is being set 
echo $_SESSION['myword']; 

ध्यान रखें कि जब आप साझा वेब होस्टिंग का उपयोग कर रहे हैं, अपने सत्र डेटा अक्सर वेबसर्वर पर एक वैश्विक फ़ोल्डर में संग्रहीत किया जाता है और उस सर्वर पर हर वेबसाइट द्वारा इस्तेमाल किया जा सकता है। इसे रोकने के लिए, आपको 'session_save_path()' फ़ंक्शन का उपयोग करके या अपना सत्र हैंडलर बनाकर सत्र सहेजें पथ बदलना चाहिए।

0

कॉल session_start();, और कुछ भी में सेट किया गया है $_SESSION सुपर ग्लोबल सरणी, आप इसे फिर से एक्सेस कर सकते हैं।

यह सेट नहीं है तो उसे अपने साथ सेट कर सकते हैं:
पीएचपी File1

<?php 
session_start(); 
$_SESSION['word'] = $_POST['word'] 
?> 

पीएचपी करें 2

<?php 
session_start(); 
echo $_SESSION['word']; 
?> 
:
$_SESSION['a name']= 'some thing';

अपने उदाहरण के लिए

तो

0

वहां एक इसे पूरा करने के कई सारे तरीके हैं, यह सब इस बात पर निर्भर करता है कि आप इसका उपयोग कैसे करना चाहते हैं। आप उस फ़ाइल में अपनी फ़ाइल शामिल कर सकते हैं, आप आवश्यकताएं या requ_once का उपयोग कर सकते हैं, या हाँ आप सत्र सुपर ग्लोबल का उपयोग कर सकते हैं।

$ _SESSION सुपर ग्लोबल आपके आवेदन के भीतर सभी फ़ाइलों के लिए सुलभ होगा। यह सुनिश्चित करने के लिए आपको केवल एक चीज है कि आप पृष्ठ पर पहली चीज़ के रूप में पृष्ठ पर session_start() का उपयोग करें। यदि आप teh ब्राउज़र में किसी भी आउटपुट के बाद session_start() का उपयोग करते हैं तो यह काम नहीं करेगा। आमतौर पर आप session_start() को अपनी index.php फ़ाइल पर पहली पंक्ति के रूप में चलाने के लिए चाहते हैं। तो फिर तुम तो उपयोग कर सकते हैं ...

<?php 
if (isset($_POST["search"])) {  

//include database connection 

$word = mysql_real_escape_string($_POST["search"]); 
$word = htmlentities($word); 
$_SESSION['word'] = $word; 

$sql = ("SELECT task_id, task_date FROM customer JOIN task ON customer.id = task.customer_id WHERE mobil = $word ORDER BY task_date DESC LIMIT 0, 10"); 

$results = mysql_query($sql); 
if (mysql_num_rows($results)==0) { 
    echo $word, " text bla"; 
}else { 
    echo $word, " text bla bla"; 
    while ($row = mysql_fetch_assoc($results)) { 
    echo '<pre>', print_r($row), '<pre>'; 
    } 
    } 
}?> 

किसी भी पेज में आप यह सिर्फ यह कैलोरी अप करने के लिए उपयोग करना चाहता हूँ ...

<?php 
    echo $_SESSION['word']; 

आशा में मदद करता है कि

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