2014-10-31 8 views
6

Ich bin neu in $_SESSIONS, aber es muss Variablen zwischen verschiedenen PHP-Dateien wiederverwendet werden. Im folgenden Code möchte ich die Variable $word in einer anderen PHP-Datei verwenden, aber ich bin mir nicht sicher, wie das geht.Verwenden Sie SESSIONS Variablen zwischen verschiedenen PHP-Dateien

Meine php-Datei sieht wie folgt aus:

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

Wir freuen uns auf Ihre Anregungen.


--- UPDATE Sessions arbeiten immer noch nicht auf page2.php? ---

Ich verstehe nicht, warum $_SESSION nicht funktionieren. One page1.php Ich kann echo($_SESSION['word']) und bekomme den richtigen Wert, aber eine page2.php bekomme ich ('$'."_SESSION['word'] isn't set because you had never been at file one");

Ich testete alle der folgenden Lösungen, aber keiner von ihnen arbeitete = das gleiche Ergebnis auf page2.php.

Meine page1.php Datei.

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

Meine page2.php Datei.

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

Ich werde verrückt darüber.


UPDATE - GELÖST
ich alle folgenden Vorschläge getestet, aber keiner von ihnen arbeitete was seltsam war, weil ich einstellen könnte und Echo aus den sesson_id() auf page1.php und page2.php, sondern auf page2. php Ich habe eine andere sesson_id(). Ich begann meine Einstellungen für die MAMP-Sitzungen zu überprüfen, aber alles war korrekt eingestellt. Die Lösung war "einfach" die session_start(); ganz oben auf page2.php zu platzieren. Und ganz oben meine ich vor alles auch die <!DOCTYPE html> usw.
Gelöst + Lektion :-)

gelernt
+1

hilft Ihnen bei Google verboten sind? http://php.net/manual/en/session.examples.basic.php http://www.tizag.com/phpT/phpssessions.php – Cheery

+1

Bitte, [benutzen Sie nicht mysql_ * 'Funktionen] (http : //stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php), Sie werden nicht mehr gewartet und sind [offiziell veraltet] (https://wiki.php.net/ rfc/mysql_deprecation). Erfahren Sie stattdessen [vorbereitete Aussagen] (http://en.wikipedia.org/wiki/Prepared_statement) und verwenden Sie [PDO] (http://us1.php.net/pdo) oder [MySQLi] (http: // us1.php.net/mysqli). [Dieser Artikel] (http://php.net/manual/en/mysqlinfo.api.choosing.php) hilft Ihnen bei der Entscheidung. –

+0

@Cherry Ich (immer und) habe bereits gelesen und getestet basierend auf dem PHP-Handbuch. Aber konnte es nicht funktionieren. – Nomis

Antwort

2

Zuerst müssen Sie die seesion über session_start(); direkt nach der ‚Tag‘ Öffnung PHP starten (<?php session_start();... ?>)

Dann müssen Sie Ihre Variable, um die Sitzung zu speichern. Sie können $_SESSION['word'] = $word; für diesen Zweck verwenden.

Und in der anderen Datei müssen Sie auch session_start(); ganz nach dem <?php 'Tag' verwenden.

Dann können Sie über $word = $_SESSION['word']; auf die alte Variable zugreifen.

Sie können jetzt auch $word in der zweiten Datei verwenden. Aber Sie können es nur verwenden, wenn es eingestellt ist (und Sie waren vorher bei der ersten Datei).

Datei ein:

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

Datei zwei:

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

this helps;)

+0

Ich habe Ihren Vorschlag getestet, aber zuerst hat es nicht funktioniert. Stellt sich heraus, ich brauche nur die '' Zuerst in meiner PAGE2.php-Datei. Ich meine vor dem ' ' usw. – Nomis

2

Um PHP-Sessions verwenden Sie würden die folgenden tun:

die Sitzung einleiten, session_start();

Hinweis:session_start(); muss die erste Zeile von PHP in Ihrer Datei sein.

Erstellen Sie die Sitzung, $_SESSION['word'] = $word;

es auf einer anderen Seite zu besuchen:

einleiten Sitzung session_start();

Zugriff auf die Sitzung, $word = $_SESSION['word'];

0

session_start() bedeutet, dass Sie Session-Variablen verwenden Stelle sicher, dass es oben auf der Seite steht. Um eine Sitzung zu machen, tun Sie: $_SESSION['word'] = [some value].Dies kann zwischen Seiten verwendet werden, solange Sie oben session_start() haben. Stellen Sie sicher, dass es zuerst gesetzt wird, wenn es nicht initialisiert ist.

<?php session_start(); ?> 

... 

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

Zuerst sollten Sie die Sitzung mit der Funktion 'session_start()' starten. Legen Sie dies in Ihre index.php/bootstrap.php (eine Datei, die immer geladen wird, wenn Sie Ihre Website laden).

Danach können Sie die globalen Daten '$ _SESSION' verwenden.

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

In der Datei, die Sie die $ Wort gespeichert werden soll:

$_SESSION['myword'] = $word; 

Und von diesem Punkt Sie diese Variable auf eine andere Seite verwenden können.

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

Beachten Sie, dass, wenn Sie gemeinsam genutzte Web-Hosting verwenden, Ihre Sitzungsdaten häufig in einem globalen Verzeichnis auf dem Webserver gespeichert und können von jeder Website auf diesem Server verwendet werden. Um dies zu verhindern, sollten Sie den Sitzungsspeicherpfad mit der Funktion 'session_save_path()' ändern oder einen eigenen Sitzungshandler erstellen.

0

Anruf session_start(); am Anfang der PHP-Datei, und wenn etwas in der Menge $_SESSION super globale Array, können Sie wieder darauf zugreifen.

Wenn es nicht gesetzt ist, können Sie es mit ein:
$_SESSION['a name']= 'some thing';

So für Ihr Beispiel:
PHP FILE1

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

PHP FILE2

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

Dort a Es gibt viele Möglichkeiten, dies zu erreichen, alles hängt davon ab, wie Sie es verwenden möchten. Sie können Ihre Datei in diese Datei einfügen, Sie können require oder require_once verwenden, oder Sie können die Sitzung super global verwenden.

Der super globale $ _SESSION wird für alle Dateien in Ihrer Anwendung zugänglich sein. Das Einzige, was Sie tun müssen, ist session_start() auf der Seite als erstes auf dieser Seite zu verwenden. Wenn Sie session_start() verwenden, nachdem eine Ausgabe in den Browser gegangen ist, funktioniert sie nicht. Normalerweise möchten Sie session_start() als erste Zeile in Ihrer index.php-Datei ausführen. Dann können Sie verwenden ...

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

dann in jeder Seite, die Sie zugreifen möchten, um es cal es nur bis ...

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

Hoffnung, die

Verwandte Themen