2014-10-31 3 views
6

Sono nuovo a $_SESSIONS ma ho bisogno di riutilizzare le variabili tra diversi file php. Nel codice seguente voglio usare la variabile $word in un altro file php, ma non sono sicuro di come farlo.Utilizzare le variabili SESSIONS tra diversi file php

Il mio file php assomiglia a questo:

<?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>'; 
    } 
    } 
}?> 

In attesa di vostri suggerimenti.


--- sessioni UPDATE ancora non funziona su page2.php? ---

Non capisco perché $_SESSION non funzioni. Una pagina1.php Posso echo($_SESSION['word']) e ottenere il valore corretto, ma una pagina2.php ottengo ('$'."_SESSION['word'] isn't set because you had never been at file one");

Ho provato tutte le soluzioni di seguito ma nessuna ha funzionato = stesso risultato su page2.php.

Il mio file page1.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); 
?> 

Il mio file 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"); 
} 
?> 

Sto diventando pazzo per questo.


AGGIORNAMENTO - RISOLTO
ho provato tutti i suggerimenti qui sotto, ma nessuno di loro ha lavorato, che era strano perché ho potuto impostare e eco il sesson_id() su page1.php e page2.php, ma su page2. php ho ottenuto un diverso sesson_id(). Ho iniziato a esaminare le impostazioni delle mie sessioni MAMP, ma tutto era impostato correttamente. La soluzione è stata "semplicemente" per posizionare lo session_start(); nella parte superiore di page2.php. E dalla cima voglio dire prima di tutto anche la lezione + Risolto <!DOCTYPE html> ecc
imparato :-)

+1

State vietato in Google? http://php.net/manual/en/session.examples.basic.php http://www.tizag.com/phpT/phpsessions.php – Cheery

+1

Per favore, [non usare le funzioni 'mysql_ *'] (http : //stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php), non vengono più gestiti e sono [ufficialmente deprecati] (https://wiki.php.net/ rfc/mysql_deprecation). Scopri invece [istruzioni preparate] (http://en.wikipedia.org/wiki/Prepared_statement) e usa [PDO] (http://us1.php.net/pdo) o [MySQLi] (http: // us1.php.net/mysqli). [Questo articolo] (http://php.net/manual/en/mysqlinfo.api.choosing.php) ti aiuterà a decidere. –

+0

@Cherry I (sempre e) hanno già letto e testato in base al manuale php.Ma non poteva farlo funzionare. – Nomis

risposta

2

In primo luogo è necessario avviare il seesion via session_start(); direttamente dopo l'apertura di PHP 'tag' (<?php session_start();... ?>)

allora si deve salvare la variabile per la sessione. È possibile utilizzare $_SESSION['word'] = $word; per questo scopo.

E nell'altro file è necessario utilizzare anche session_start(); al primo dopo il "tag" <?php.

Quindi è possibile accedere alla vecchia variabile tramite $word = $_SESSION['word'];.

Ora è possibile utilizzare anche $word nel secondo file. Ma puoi usarlo solo se è impostato (e tu dove prima si trovava nel primo file).

file uno:

<?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>'; 
    } 
    } 
}?> 

file due:

<?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; 
?> 

Spero che questo aiuti;)

+0

Ho testato il tuo suggerimento, ma all'inizio non ha funzionato. Ho scoperto che ho bisogno di inserire '' Prima sul mio file PAGE2.php. Per prima cosa intendo prima del 'ecc. – Nomis

2

Per utilizzare sessioni PHP si dovrebbe fare il seguito:

avviare la sessione, session_start();

Nota:session_start(); deve essere la prima riga di PHP nel file.

creare la sessione, $_SESSION['word'] = $word;

Per accedere in un'altra pagina:

avviare la sessione, session_start();

accesso alla sessione, $word = $_SESSION['word'];

0

session_start() significa che si sta utilizzando le variabili di sessione , assicurati che sia nella parte superiore della pagina. Per fare una sessione devi: $_SESSION['word'] = [some value].Può essere utilizzato tra le pagine finché hai session_start() nella parte superiore. Assicurati che sia impostato per primo, se non è impostato per l'inizializzazione.

<?php session_start(); ?> 

... 

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

Prima di tutto è necessario avviare la sessione utilizzando la funzione 'session_start()'. Inserisci questo nel tuo index.php/bootstrap.php (un file che viene sempre caricato durante il caricamento del tuo sito web).

Dopodiché, è possibile utilizzare "$ _SESSION" globale per impostare i dati.

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

Nel file che si desidera salvare il $ parola:

$_SESSION['myword'] = $word; 

E da quel punto è possibile utilizzare questa variabile in un'altra pagina.

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

essere consapevoli che quando si utilizza webhosting condiviso, i dati della sessione è spesso memorizzato in una cartella globale sul server web e può essere utilizzato da ogni sito web su quel server. Per evitare ciò, è necessario modificare il percorso di salvataggio della sessione utilizzando la funzione 'session_save_path()' o creando il proprio gestore di sessione.

0

chiamata session_start(); all'inizio del file PHP, e se qualcosa si trova nel $_SESSION array super globale, è possibile riaccedere.

Se non è impostato è possibile impostarlo con:
$_SESSION['a name']= 'some thing';

Così, per il tuo esempio:
PHP FILE1

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

PHP FILE2

<?php 
session_start(); 
echo $_SESSION['word']; 
?> 
0

There a Ci sono molti modi per farlo dipende tutto da come lo si vuole usare. Puoi includere il tuo file in quel file, puoi usare require o require_once oppure yes puoi usare la sessione super global.

$ _SESSION super globale sarà accessibile a tutti i file all'interno dell'applicazione. L'unica cosa che devi fare è usare session_start() sulla pagina come prima cosa in quella pagina. Se usi session_start() dopo che l'output è andato al browser, non funzionerà. Solitamente vorrai eseguire session_start() come prima riga sul tuo file index.php. Quindi è possibile utilizzare ...

<?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>'; 
    } 
    } 
}?> 

poi in ogni pagina che si desidera l'accesso ad esso solo cal in su ...

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

Speranza che aiuta