2012-03-28 4 views
0

Ich habe drei PHP-Dateien wie folgt vor:kann nicht herausfinden, was das Problem ist, auf die Sitzung in PHP mit include() zuzugreifen;

config.php

<?php 
    session_start(); 

    $database_server = "localhost"; 
    $database_name="dbname"; 
    $database_username="root"; 
    $database_password=""; 

    $_SESSION["server"] = $database_server; 
    $_SESSION["dbname"] = $database_name; 
    $_SESSION["dbuser"] = $database_username; 
    $_SESSION["dbpassword"] = $database_password; 



?> 

db.php

<?php 
include("config.php"); 
session_start(); 
    //config file for database 
    $con = mysql_connect($_SESSION["server"],$_SESSION["dbuser"],$_SESSION["dbpassword"]) or die(mysql_error()); 
    if ($con) 
    { 
     $dbhandler = mysql_select_db($_SESSION["dbname"] , $con) or die(mysql_error()); 
    } 
    else 
    { 
     echo "not possible to connect to database"; 
    } 
?> 

header.php

<?php 
    include ("../config/db.php"); 

?> 
    <div class="topbar"> 
     <div class="fill"> 

       <div class="container"> 
        <h3><a href="#">title</a></h3> 

        <ul> 
         <li><a href="#">General Config</a></li> 
         <li class="active"><a href="#">Add title</a></li> 
         <li><a href="#">title</a></li> 
         <li><a target="_blank" href="http://www.site.com/">website</a></li> 

        </ul> 


       </div> 
      </div> 
    </div> 

ich xampp bin mit der Entwicklung und Jedes Mal, wenn ich versuche, die header.php auszuführen, erhalte ich folgende Fehler:

Deprecated: den Rückgabewert der neuen Zuordnung von Referenz wird in C veraltet: \ xampp \ php \ PEAR \ Config.php auf Leitung 80

Veraltet: Zuweisen der Rückgabewert der neuen durch Referenz in C veraltet: \ xampp \ php \ PEAR \ Config.php auf Leitung 166

Hinweis: Nicht definiert Index: Server in C: \ xampp \ htdocs \ ossila \ config \ db.php in Zeile 5

Hinweis: Undefinierter Index: dbuser in C: \ xampp \ htdocs \ ossila \ config \ db.php in Zeile 5

Hinweis: Nicht definiert Index: dbpassword in C: \ xampp \ htdocs \ ossila \ config \ db.php in Zeile 5

Notice: Undefined index: dbname in C: \ xampp \ htdocs \ ossila \ config \ db.php on line 8

Um ehrlich zu sein, ich habe keine Ahnung, wo diese Probleme herkommt? Ich benutze Xampp 1.7.7 (neueste Version) ist es wegen einer Fehlkonfiguration in Xampp? oder sollte ich einen anderen Weg verwenden, um die Sitzung zu konfigurieren?

+1

Haben Sie versucht, 'session_start()' aus Ihrer Datei db.php zu löschen? (Blindes Raten) – jprofitt

+4

wooooah!tun Sie das nicht: '$ _SESSION [" dbpassword "] = $ database_password;' –

+1

Speichern von db-Details in der Sitzung keine gute Praxis –

Antwort

3

Ich sehe ein paar Probleme hier.

  1. Die Datenbankverbindung sollte nicht in der Sitzung gespeichert werden. Sie können sicher eine Variable in der config.php & nennen es in db.php aufrufen, solange Sie config.php in db.php einschließen

  2. Rufen Sie nicht session_start zweimal im selben Prozess. Wenn Sie sicher sein möchten, rufen sie gleich am Anfang Ihrer PHP-Verarbeitung (wahrscheinlich die Seite, die header.php enthalten)

  3. Sie realpath(dirname(__FILE__)) verwenden sollten Dateien enthalten, es ist sicherer und kann viele Fehler vermeiden

    Hier

ist die config.php:

<?php 
    //session_start(); It doesn't make sense to call that in db.php, call it at the beginning of your page 

    $database_server = "localhost"; 
    $database_name="dbname"; 
    $database_username="root"; 
    $database_password=""; 
?> 

db.php

<?php 
include(realpath(dirname(__FILE__))."/config.php"); 

    $con = mysql_connect($database_server,$database_username,$database_password) or die(mysql_error()); 
    if ($con) 
    { 
     $dbhandler = mysql_select_db($database_name , $con) or die(mysql_error()); 
    } 
    else 
    { 
     echo "not possible to connect to database"; 
    } 
?> 
+1

BTW, es gibt keinen Punkt mit 'realpath' auf' __FILE__', es ist schon die reale Pfad. Verwenden Sie stattdessen einfach "__DIR__". Außerdem normalisiert PHP automatisch den Dateinamen, wenn man eine Datei einfügt, da ich mich nicht daran erinnern kann, welche Version (also mit 'include_once' in' foo.php' und './Foo.php' nur einmal enthalten ist). – netcoder

+0

Ich muss zugeben, ich habe es nie wirklich versucht :) Danke für den Tipp – haltabush

Verwandte Themen