2014-07-25 15 views
9

मैं php में सत्रों के बीच आगे और पीछे स्विच करने में सक्षम होना चाहता हूं। मैं इसे उत्पादनPHP मैं कई सत्र कैसे बना सकता हूं?

Array 
(
    [name] => 1 
) 
Array 
(
    [name] => 2 
) 
Array 
(
    [name] => 1 
) 

लेकिन यह

Array 
(
    [name] => 1 
) 
Array 
(
    [name] => 2 
) 
Array 
(
    [name] => 2 
) 

ऐसा सत्र के बीच स्विच करने के लिए संभव है outputting है करना चाहते हैं

<?php 

session_name("session1"); 
session_start(); 
$_SESSION["name"] = "1"; 
echo "<pre>", print_r($_SESSION, 1), "</pre>"; 
session_write_close(); 

session_name("session2"); 
session_start(); 
$_SESSION["name"] = "2"; 
echo "<pre>", print_r($_SESSION, 1), "</pre>"; 
session_write_close(); 

session_name("session1"); 
session_start(); 
echo "<pre>", print_r($_SESSION, 1), "</pre>"; 

: यहाँ मेरे वर्तमान कोड है? मुझे एक ही समय में चलने वाले दो सत्रों की आवश्यकता नहीं है, लेकिन मुझे उनके बीच स्विच करने में सक्षम होना चाहिए। जब मैं इस कोड को चलाता हूं, तो मुझे दो कुकीज़ मिलती हैं: session1 और session2 एक ही मान के साथ।

किसी भी मदद के लिए धन्यवाद!

+1

मई सहायता: http://stackoverflow.com/questions/7551404/php-what-is-the-purpose-of-session-name –

+0

धन्यवाद, मैंने पहले ही देखा है । यही वही है जो मुझे चाहिए, लेकिन किसी कारण से यह काम नहीं कर रहा है। – Nathan

+1

आपका शीर्षक कहता है कि यह "काम नहीं कर रहा है" वास्तव में यह ऐसा नहीं कर रहा है जो आपको लगता है कि इसे करना चाहिए। उचित सवाल क्यों नहीं पूछें, * मैं एक्स कैसे कर सकता हूं? मैंने यही कोशिश की है। * –

उत्तर

15

आप उपयोग करना क्या जरूरत session_id() बजाय session_name()

<?php 

session_id("session1"); 
session_start(); 
echo session_id(); 
$_SESSION["name"] = "1"; 
echo "<pre>", print_r($_SESSION, 1), "</pre>"; 
session_write_close(); 

session_id("session2"); 
echo session_id(); 
session_start(); 
$_SESSION["name"] = "2"; 
echo "<pre>", print_r($_SESSION, 1), "</pre>"; 
session_write_close(); 

session_id("session1"); 
echo session_id(); 
session_start(); 
echo "<pre>", print_r($_SESSION, 1), "</pre>"; 
session_write_close(); 

session_id("session2"); 
echo session_id(); 
session_start(); 
echo "<pre>", print_r($_SESSION, 1), "</pre>"; 

यह प्रिंट होगा है:

session1 

Array 
(
    [name] => 1 
) 

session2 

Array 
(
    [name] => 2 
) 

session1 

Array 
(
    [name] => 1 
) 

session2 

Array 
(
    [name] => 2 
) 

session_id एक सत्र, जो विशिष्ठ सत्रों में मदद करता है के लिए एक पहचानकर्ता है। session_name वर्तमान सत्र के लिए केवल नामित उपनाम है

+3

यदि आप इस तकनीक का उपयोग करते हैं, तो उसी सत्र आईडी वाले विभिन्न उपयोगकर्ता अपने सत्र चर साझा करेंगे। सत्र आईडी अनुमान लगाना अद्वितीय और कठिन होना चाहिए। – Barmar

+1

विचार यह है कि विभिन्न उपयोगकर्ताओं को एक ही सत्र आईडी प्रदान नहीं की जानी चाहिए। स्वाभाविक रूप से यह सत्र 1 की तरह एक साधारण स्ट्रिंग नहीं होगा, इसके बजाय सैसेन 2 उस उपयोगकर्ता या सत्र के लिए अद्वितीय होगा। – raidenace

+1

यह समाधान तब तक बड़े सुरक्षा जोखिमों का तात्पर्य है जब तक कि लागू नहीं किया जाता है। – nebulousGirl

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