birlikte yaşamak çok oturum tutmak için nasıl

3 Cevap php

Thanks a lot and sorry for bothering.. I'm still a PHP rookie, I am having a few problems trying to understanding/finding out how to keep multi session live together works.. here my existing sessions e.g.

session_start();
// If no session exists, create one
if (!session_is_registered('lesson')) {
    $_SESSION['lesson'] = new lesson;
} 
$lesson = $_SESSION['lesson'];

ve sonra ben aşağıda kodundan yeni oturumu eklemek istiyorum:

if (!isset($_POST['languageselect'])) { 
    $languageselect = $standardlanguage; 
} else { /* set standard language */
    $languageselect = $_POST['languageselect']; 
} //endif
if($languageselect == 1) {  /* My Language Pack */
    $languagearray = array (
1=>"one",
2=>"two");
} else  {   /* English Language Pack (=standard) */

    $languagearray = array (
1=>"one",
2=>"two");

function printoptionbox($boxname, $cssclass, $elementsarray, $kataktiv=1) {
    echo "<select name='$boxname' class='$cssclass'>";
    while (list($key,$value) = each($elementsarray)) {
        if ($key == $kataktiv) {    
            $SELECTED = "SELECTED";
        } else {
            $SELECTED = "";
        } //endif
        echo "<option $SELECTED value='$key'>$value</option>";
    } //endwhile
    echo "</select>";
} 

Here the HTML code from dropdown language options:

<td class="arial" width="210"><?php printoptionbox("languageselect", "languageselect", $language_array, $kataktiv=$languageselect); ?></td>                                         <input type="submit" name="languageselectsubmit" value="OK" width="30" style= "width: 30px; font-size:10px" class="submitbutton">

but i most confuse, how to create the session from language code above and then would be work for another page (different code), because the multiple language options just work in first page but will resetting for next page... Thank you so much for any advice on this

3 Cevap

Belki ben oldukça burada niyeti takip etmedi gibi hissediyorum, ama 1) aynı anda iki oturumları korumak ve 2) ben gerçekten olsa gerek olacağını sanmıyorum mümkün olmayacaktır bahsetmek istiyorum.

Oturum daha sonra alınmak üzere bir dizi veri saklayabilirsiniz. Eğer eminseniz oturumda bu verileri depolamak istediğiniz sonra sadece dizisi eklemek ve gerektiğinde onu geri dışarı çekmek. Yapmanız gereken onlar farklı bir dil seçerseniz, yeni bir dil, eski dizi üzerine yazarak oturumda takas böylece kod yazmak değildir.

Bunu daha kolay sunucuda tefrika düz dosyalarda dil dizileri saklamak ve daha sonra kullanıcıların tercihlerine göre bunları çekmek için (ben çok yakın gibi) bulabilirsiniz. Bu çok hızlı, yükü çok düşük olduğunu ve gerekli hiçbir işleme az olduğunu bu yüzden size yetenek 'cache' dil kazanmak.

Ben $ _SESSION küresel arkasında kavramını yanlış düşünüyorum. Gerçekten farklı istekleri arasındaki değerleri saklamak için kullanılan bir küresel ilişkisel dizi var.

Sonraki istek gerçekleşir ya da oturum zaman aşımına kadar yürütülmesi sırasında küresel koymak her şey kaydedilecektir.

Yani, bu örneği dikkate:

// file1.php
session_start();

$_SESSION['lesson'] = new lesson();

// file2.php
session_start();

$_SESSION['language_code'] = 1;

// file3.php
session_start();

// dumps both values we packed into the session from the previous requests
var_dump($_SESSION);

Her şeyden önce, ben tam PHP üzerinde nasıl çalıştığını oturumun kavramını anlamak ve tamamen emin değilim. PHP oturum değil tek değişkenler için tüm değişkenlerin (vb dil dersi,), ifade eder. Peki gerçekten ne arıyorsun "canlı çok oturumu" tutmak için nasıl değil, ama yerine ne kadar "bir oturumuna mağaza birden değişkenler" üzerine.

$ _SESSION Içindeki anahtar kelimeler olarak kaydederek, tek oturumda birden fazla değişken kaydedebilirsiniz. Örneğin siz çağırarak oturuma dil ayarı kaydedebilirsiniz $_SESSION['lang']='en';. Aynı şekilde çağırarak oturuma "ders" değişkeni ekleyebilirsiniz $_SESSION['lesson']=1;.

Ben kuvvetle PHP oturumları çalışmak nasıl bir öğretici ile okuma öneririz. Örneğin, PHP Sessions on w3schools.com için bir göz atın.

Kodunuzu seviyeye alarak, bir göz önüne alarak düşünebiliriz birkaç nokta vardır:

  • Printoptionbox çağırmadan önce, session_start(); arayarak oturumu başlatıldı emin olun. Kod örnekleri dayanarak bu tamamen açık değildir. Eğer oturum başlangıç ​​demiyorlar, sen doğru değişken değerini geri mümkün olmayacaktır.
  • $_SESSION den printoptionbox için değişkenin değerini geçmek emin olun.

Hızlı bir sınama olarak sizinle çağrı yerine deneyebilirsiniz:

<?php printoptionbox("languageselect", "languageselect", $language_array, $_SESSION['language']); ?>

Ayrıca:

  • Eğer kullanıcıya dil seçimi kaydetmek emin olun $_SESSION!

Bir yan not olarak:

  • PHP en son sürümlerinde onaylanmaz beri işlevinin session_is_registered potansiyel olarak da sorunlara neden olabilir. Ayrıca, sizinle hemen değiştirin isset yerine yapabilirsiniz:
// If no session exists, create one
if ( isset($_SESSION['lesson']) ) {
   ...
}