PHP Code nimmt meine Variablen nicht ...

david96

Ensign
Registriert
März 2007
Beiträge
218
Neues Problem:

Ich lasse in einem Install Script Datenbank - Daten (Name, Passwort, User, Host) per Formular eingeben. Dann wird zu der Datenbank connectet (Übermittlung der Daten über POST), und paralell Host, Pass, User & Name in je eine Datei eingetragen.

Diese sehen so aus:

PHP:
$db_host = 'localhost';
Die anderen halt im gleichen Schema. So weit, so gut,

aber jetzt das Problem: Um die Userdaten einzutragen in die UserDB, muss ich ja wieder auf die DB zugreifen. Also der Code:

PHP:
<?php
error_reporting(E_ALL);
$username= $_POST['username'];
$passwort= $_POST['passwort'];
$email= $_POST['email'];

include 'config/db_host.txt';
include 'config/db_name.txt';
include 'config/db_user.txt';
include 'config/db_pass.txt';

$db_link = mysql_connect($db_host, $db_user, $db_pass);
mysql_select_db($db_name);

$sql = "INSERT cms_USER (Username,Password,Email) VALUES ('$username','$passwort','$email')";
$result = mysql_query($sql) OR
die("Query: <pre>".$sql."</pre>\n".
"Antwoertchen: ".mysql_error());

?>
Folgendes kommt dabei raus:

Code:
$db_host = 'localhost';$db_name = '(zensiert)';$db_user = '(zensiert)';$db_pass = '(zensiert)';
[B]Notice[/B]:  Undefined variable: db_host in [B]/var/www/vhosts/(domain)/subdomains/dev/httpdocs/db_install4.php[/B] on line [B]88[/B]

[B]Notice[/B]:  Undefined variable: db_user in [B]/var/www/vhosts/(domain)/subdomains/dev/httpdocs/db_install4.php[/B] on line [B]88[/B]

[B]Notice[/B]:  Undefined variable: db_pass in [B]/var/www/vhosts/(domain)/subdomains/dev/httpdocs/db_install4.php[/B] on line [B]88[/B]

[B]Notice[/B]:  Undefined variable: db_name in [B]/var/www/vhosts/(domain)/subdomains/dev/httpdocs/db_install4.php[/B] on line [B]89[/B]
Die Datenbankdaten & die Domain hab ich durch (domain) und (zensiert) ersetzt ^^ also das war natürlich in der eigentlichen Datei nicht so.

Die ganzen MySQL Errors hab ich jetzt weggelassen, ist ja klar dass es nicht geht wenn er die Daten nicht bekommt ...

NEED HELP!

Danke im Vorraus.
 
Zuletzt bearbeitet:
Du kannst nur PHP-Dateien includen!
 
Noch ein kleiner Tipp für Include-Dateien:

Jetzt kann man einfach mal intelligent raten und die Datei ....../config/db_pass.txt im Browser aufrufen. Diese wird als Textdatei angezeigt. Wenn du z.B. db_pass.inc.php verwendest wird die Datei, wenn sie aufgerufen wird, interpretiert. Da aber keine Ausgabe-Operation durchgeführt wird, sondern nur Zuweisungen in der Datei stehen, hat das keine Auswirkungen.

Natürlich könnte man auch einstellen, dass der Webserver keine Textdateien ausliefert oder das config-Verzeichnis schützen gegen externe Zugriffe...

gruß
hostile
 
Noch ein kleiner Tipp, mach deine includes als .php Dateien.

Hat folgende Sicherheitsaspekt:
Ruf mal: "http://deineDomäne/config/db_pass.txt" im Browser auf und du wirst dein DB Passwort ohne Probleme lesen können.

Wenn du hingegen die Include Datei als db_pass.php abspeicherst, dann zeigt dir der Browser gar nichts an, da der ganze PHP Code schön da bleibt, wo er hingehört, auf dem Server ;)

Nur als kleiner Tipp am Rande...

Gruß
cheft


Edit:

Ich brauch einfach zu lange um was zu schreiben.... ich glaub ich geb das schreiben auf -.-
 
Okay danke für eure Tipps. werde ich umsetzten.
 
Desweiteren wäre es empfehlenswert all diese variablen in einer datei zu speichern - am besten mi konstanten:
define('dbHost', 'localhost');
oder in einem array
PHP:
$dbConfig = array(
    'dbHost' => 'localhost,
    'dbname' => 'myDatabase',
    ...
);

Oder gibt es einen speziellen Grund warum du das alles in eizelne dateien reintust?
 
Nein, ich wusst nur nicht wie ich alle in eins tue. Werde es aber ändern ;)
 
Zurück
Oben