PHP gibt weder Seite noch Fehler aus
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aufbau
aufbauen
break
code
date
datei
fehler
festlegen
funktion
inhalt
limit
meldung
message
page
server
session
setting
start
switch
url
-
Guten Abend Com.
Seit einigen Tagen Programmiere ich ein Social Network zu meinem Minecraft-Server.
Das ganze klappt auch wunderbar, zumindest auf dem Localhost, Lima-City's Server gibt nichts aus.
Der Quelltext der Seite:
<?php error_reporting(E_ALL); #Settings include("./settings.php"); #Datenbankverbindung aufbauen mysql_connect($dbhost,$dbuser,$dbpw); mysql_select_db($db); #Session $timestap = time(); $ip = $_SERVER['REMOTE_ADDR']; $query1 = "SELECT username, password, date, ip FROM session WHERE ip = '$ip' LIMIT 1"; $qee = mysql_query($query1); $row1 = mysql_fetch_object($qee); if(!isset($row1->username)) { echo "Bitte anmelden! <a href=\"http://myccnet.de\">Login</a>"; } else { $query = "SELECT username, password, date, userid FROM session WHERE date > '$timestap' LIMIT 1"; $result = mysql_query($query); $row = mysql_fetch_object($result); if(!$result) { echo "Session abgelaufen, bitte erneut <a href=\"http://myccnet.de\">Einloggen</a>"; } else { #Variabeln festlegen #$_SESSION['id'] = $row->username; #$_SESSION['pw'] = $row->password; $pw = $row->password; $id = $row->username; $userid = $row->userid; $side = $_GET['page']; $method = $_GET['method']; $postid = $_GET['id']; #myNe-Funktion if($method == "makemyne") { $qry = "SELECT userid FROM makemyne WHERE postid = '$postid'"; $dro = mysql_query($qry); $qry1 = mysql_fetch_object($dro); $querrry = "INSERT INTO makemyne (userid, postid) VALUES ('$userid', '$postid')"; $dorr = mysql_query($querrry) or die ("Fehler"); } #Aufbau require("./forms/headframe.php"); if(!isset($side)) { include("./side/start.php"); } else { switch ($side) { case 'newpost': echo "Neuer Post erstellt!"; include("./side/start.php"); break; case 'message': include("./side/message.php"); break; case 'chat': include("./side/chat.php"); break; case 'account': include("./side/account.php"); break; case 'map': include("./side/map.php"); break; case 'logout': include("./side/logout.php"); break; } } } #Fuß include("./forms/footframe.php"); } ?>
In der Datei "settings.php" stehen nur die Datenbankdaten (Host, Benutzer, Passwort).
Auf meinem Xampp-Server wird das ganze so interpretiert, wie ich es möchte, und sieht dann so aus:
Screenshot
(In dem Fall wird die Datei "start.php" eingebunden, die einzeln auch auf dem Server einwandfrei funktioniert.)
In meiner .htacces-Datei steht folgendes:
php_flag display_startup_errors on php_flag display_errors on php_flag html_errors on php_value docref_root 1 php_value docref_ext 1
Weiß jemand, warum das ganze nicht auf Lima-City funktioniert, oder zumindest, wie ich die Fehler anzeigen lassen kann?
Vielen Dank.
[Tut mir leid, wenn der Code teilweiße unübersichtlich oder etwas "unreif" daher kommt, ich lerne noch] -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Keinerlei Ausgabe?
Dann fang mal so an: Spiel mit Echos und versuch die Stelle rauszufinden, wo es endet. Beispiel:
<?php echo "start <br/>"; error_reporting(E_ALL); #Settings include("./settings.php"); echo "sessions included <br/>"; #Datenbankverbindung aufbauen mysql_connect($dbhost,$dbuser,$dbpw); mysql_select_db($db); echo "database connected and selected <br/>"; #Session $timestap = time(); $ip = $_SERVER['REMOTE_ADDR']; // .....
Da muss eigentlich mindestens das "start" rauskommen, und dann kannst du sehen, wie weit er ungefähr geht. Damit kannst du vllt schonmal ein bisschen weiter kommen. So könnte man rangehen.
Ansonsten, blöde Vermutung: Hast du die Echos vergessen? Oder Cache noch gespeichert, der ne weiße Seite anzeigt? Ist ein Link zu haben?
Liebe Grüße -
Hallo,
mf-hd schrieb:
Auf meinem Xampp-Server wird das ganze so interpretiert, wie ich es möchte, und sieht dann so aus:
Screenshot
Auf dem Screenshot sehe ich mehrere Meldungen ganz oben, die du nicht ignorieren solltest.
Außerdem ist der Code sehr schlecht eingerückt, was das Fehlerfinden sehr schwer macht. Guck dir mal das an:
<?php error_reporting(E_ALL); #Settings include("./settings.php"); #Datenbankverbindung aufbauen mysql_connect($dbhost,$dbuser,$dbpw); mysql_select_db($db); #Session $timestap = time(); $ip = $_SERVER['REMOTE_ADDR']; $query1 = "SELECT username, password, date, ip FROM session WHERE ip = '$ip' LIMIT 1"; $qee = mysql_query($query1); $row1 = mysql_fetch_object($qee); if(!isset($row1->username)) { echo "Bitte anmelden! <a href=\"http://myccnet.de\">Login</a>"; } else { $query = "SELECT username, password, date, userid FROM session WHERE date > '$timestap' LIMIT 1"; $result = mysql_query($query); $row = mysql_fetch_object($result); if(!$result) { echo "Session abgelaufen, bitte erneut <a href=\"http://myccnet.de\">Einloggen</a>"; } else { #Variabeln festlegen #$_SESSION['id'] = $row->username; #$_SESSION['pw'] = $row->password; $pw = $row->password; $id = $row->username; $userid = $row->userid; $side = $_GET['page']; $method = $_GET['method']; $postid = $_GET['id']; #myNe-Funktion if($method == "makemyne") { $qry = "SELECT userid FROM makemyne WHERE postid = '$postid'"; $dro = mysql_query($qry); $qry1 = mysql_fetch_object($dro); $querrry = "INSERT INTO makemyne (userid, postid) VALUES ('$userid', '$postid')"; $dorr = mysql_query($querrry) or die ("Fehler"); } #Aufbau require("./forms/headframe.php"); if(!isset($side)) { include("./side/start.php"); } else { switch ($side) { case 'newpost': echo "Neuer Post erstellt!"; include("./side/start.php"); break; case 'message': include("./side/message.php"); break; case 'chat': include("./side/chat.php"); break; case 'account': include("./side/account.php"); break; case 'map': include("./side/map.php"); break; case 'logout': include("./side/logout.php"); break; } } } #Fuß include("./forms/footframe.php"); } ?>
So auf die Schnelle konnte ich keinen Fehler finden, aber du solltest dich mal um die Hinweise von Screenshot kümmern.
MFG THWBM
-
Die Variabeln aus dem Screenshot werden nur nach Gebrauch gefüllt,
page - Die Seite aus der Navigation, später im Code unter Aufbau zu finden.
method - Die Methode, nur wichtig falls "geliked" oder kommentiert wird, findet sich im Code unter "myNe"
id - Die ID des Posts, der Kommentiert oder geliked wird, findet sich im Code unter "myNe"
Die Fehler treten sicher auf, da nicht immer geliked oder kommentiert wird, und weil beim Aufrufen der Startseite (index.php) keinerlei Variabeln zu Seiten mitgesendet werden (bsp.: index.php?page=nachrichten), deshalb steht im Code[...] isset($page) [...]
Trotzdem Danke.
Werde das mit den "echo"s mal testen, vielen Dank
EDIT
Das mit den Echos hat mich zur Lösung gebracht. Warum auch immer, wird die Settings-Datei nicht eingebunden.
Besten Dank :)
Beitrag zuletzt geändert: 26.12.2012 19:35:51 von mf-hd -
Dann überprüfe doch mal den Pfad zur settings.php
-
Ich denke, ich habe das Problem gefunden.
In jeder .php-Datei, die ich per include() einbinde, habe ich weiteren PHP Code, den ich auf mehrere Dateien verteilt hab, um mehr übersicht zu bekommen, und um ihn in mehrere von einander unabhängige Seiten einzubinden.
Wenn ich zu beginn der eingebundenen .php-Datei<?php
und am Ende?>
schreibe, funktioniert nichts. Lasse ich das weg, funktioniert alles.
Mein einziges Problem besteht nun darin, dass ein Benutzer, der durch zufall oder wie auch immer, in die settings.php kommt, meine MySQL-Zugangsdaten im Klartext sieht.
Lässt sich das irgendwie verhindern, außer, in jeder Datei erneut die Variabeln festzulegen?
Edit:
Hatte die Idee, den Quelltext einfach als HTML-Kommentar darzustellen (<!-- PHP-Code -->).
Funktioniert im Prinzip, schaut man sich jedoch den Quelltext an, findet man die Daten dennoch.
Also fällt diese Lösung weg.
Beitrag zuletzt geändert: 26.12.2012 20:16:35 von mf-hd -
und wenn du anstelle von include mal require_once nutzt?
-
Funktioniert genauso wie bei include() bzw. include_once().
-
Inhalt der Settings.php sieht wohl so aus?:
<?php $var1 = "foo"; $var2 = "bar"; ?>
Kannst du den Inhalt deiner Settings.php vllt zensiert (also die Werte der Zugangsvariablen durch XXX ersetzt) geben? Vielleicht ist da ja auch irgendwas faul?
Das <?php ?> muss da übrigens rein, da sonst die Datei nicht augeführt wird.
Liebe Grüße -
ggamee schrieb:
Inhalt der Settings.php sieht wohl so aus?:
<?php $var1 = "foo"; $var2 = "bar"; ?>
Sieht ziemlich genau so aus -
mf-hd schrieb:
yo mey. eine ganz doofe frage ;) hast du in dem root-ordner bei lima eine .htaccess datei? und hast du als inhalt darin eine zeile mit
... klappt auch wunderbar, zumindest auf dem Localhost, Lima-City's Server gibt nichts aus. ...
? wenn nicht, hole es nach (ein alter hut hier am server)! dann musst du (fehler)meldungen von php bekommen. zeige sie dann hier falls nötig.php_flag display_errors on
==== edit ====
und von php-dateien vonm anfang bloß kein <?php wegnehmen!!!! am ende kannst - falls nicht zwischen php und html hüpst - das ?> löschen. das geht.
Beitrag zuletzt geändert: 26.12.2012 22:51:12 von czibere -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage