Lege pagina, zelfs als tekst buiten php code staat

Status
Niet open voor verdere reacties.

5blabla5

Gebruiker
Lid geworden
27 apr 2009
Berichten
485
Ik zit met een irritant probleempje: Ik krijg een lege pagina, op welke plek ik ook tekst zet. Uit zichzelf moet het script '<h1>Hello world</h1>' weergeven, en bij een ingevoerde waarde in de url iets anders, maar hij weergeeft helemaal niets.

index.php
PHP:
<?php
// index.php

// Set error reporting to all for debugging
ini_set('display_errors', 1);
error_reporting(E_ALL);

// include important files
include 'config.php';
include 'security/hijack.php';

// Show requested content
if(isset($_GET['page'])) && !empty($_GET['page'])) {
	$page      = trim($page);
	
	// Filter request for injections
	$forbidden = array('/', '.');
	$replacers = array('!', '!');
	
	$page      = str_replace($forbidden, $replacers, $page);
	
	// Build location
	$location  = 'pages/ ' . $page .'.php';
	
	// Check location
	if(file_exists($location)) {
		// Include requested page
		include $location;
	} else {
		// Include 404 error page
		include 'error/404.php';
	}
} else {
	// Include homepage
	include 'pages/home.php';
}

?>

config.php
PHP:
<?php
// Config.php

// Start sessions
session_start();

// Set database information
$database['server']   = 'localhost'; // Server
$database['username'] = '******'; // Username
$database['password'] = '********'; // Password
$database['dbname']   = '*********'; Database


// Connect with MySQL
if(mysql_connect($database['server'], $database['username'], $database['password'])) {

	// Connect with database
	if(mysql_select_db($database['dbname'])) {
	
		// Connection established
		
	} else {
	
		echo 'MySQL connection error: Database does not exist!';
		
	}
	
} else {

	echo 'MySQL connection error: Could not connect with database!';
	
}

// Unset database information variables
unset($database);

?>

security/hijack.php
PHP:
<?php

// Check login
if(isset($_SESSION['username']) && isset($_SESSION['userid']) && isset($_SESSION['ip'])) {

	$username = $_SESSION['username'];
	$userid   = $_SESSION['userid'];
	$ip       = $_SESSION['ip'];

	$user['check'] = mysql_query("SELECT userid FROM users WHERE userid='".$userid."' AND username='".$username."'");
	
	// Check if more of less users exists
	if(mysql_num_rows($user['check']) != 1) {
	
		// HiJack detected
		echo 'HiJack alert!';
		
		// Unset al session contents
		foreach($_SESSION as $sessionname => $sessioncontent) {
			unset($_SESSION[$sessionname]);
		}
		
		// Unset foreach contents
		unset($sessionname);
		unset($sessioncontent);
		
		// Destroy session
		session_destroy();
		
		die();
		
	}
	
	// Check ip
	if($ip == $_SERVER['REMOTE_ADDR']) {
		
		// HiJack detected
		echo 'HiJack alert!';
		
		// Unset al session contents
		foreach($_SESSION as $sessionname => $sessioncontent) {
			unset($_SESSION[$sessionname]);
		}
		
		// Unset foreach contents
		unset($sessionname);
		unset($sessioncontent);
		
		// Destroy session
		session_destroy();
		
		die();
		
	}
	
}

?>

error/404.php
PHP:
<h1>Page not found</h1>

pages/home.php
PHP:
<h1>Hello world</h1>


config.php en hijack.php zijn getest, en geven output, maar index.php geeft niets terug, waar je de echo ook zet. Zelfs als je iets buiten de php tags neerzet.

Serverfout? Parserfout?

Ik gebruik MAMP met php versie 5.3.2, op Mac OS X 10.6.6
 
als ik naar die hijack.php bekijk, dan staan daar die()'s in. Maak van die eens die('ip check') en iets van die('login check').
kun je zien waar de pagina stopt!
 
In principe zou het onmogelijk moeten zijn dat die die() in werking gaat, aangezien er nog geen sessies zijn aangemaakt, en de dies in een if structuur staan. Maar ik zal even kijken
 
haha ach je zult ergens moeten beginnen ;)

wacht, maak van

<h1>Page not found</h1> eens <?PHP echo' <h1>Page not found</h1>'; ?>

en het zelfde met die andere pagina

je include in het php block, misschien lukt dat!
 
Laatst bewerkt:
Nou, nog steeds geen resultaat :o

ik ga nog wel eventjes wat proberen met php codes

EDIT:
als alle php code binnen commentaar (/* */) wordt gezet, dan worden de dingen buiten de php code wèl weergeven
 
Laatst bewerkt:
ik had nog ff mijn laatste bericht ge-update
 
ik had nog ff mijn laatste bericht ge-update

of doe dit als test!
PHP:
<?php
// index.php
 
// Set error reporting to all for debugging
ini_set('display_errors', 1);
error_reporting(E_ALL);
 
// include important files
include 'config.php';
include 'security/hijack.php';
 
// Show requested content
if(isset($_GET['page'])) && !empty($_GET['page'])) {
    $page      = trim($page);
    
    // Filter request for injections
    $forbidden = array('/', '.');
    $replacers = array('!', '!');
    
    $page      = str_replace($forbidden, $replacers, $page);
    
    // Build location
    $location  = 'pages/ ' . $page .'.php';
    
    // Check location
    if(file_exists($location)) {
        echo 'Include requested page';
        include $location;
    } else {
        echo 'Include 404 error page';
        include 'error/404.php';
    }
} else {
    echo' Include homepage';
    include 'pages/home.php';
}
 
Het werkt helaas niet :confused:

Ik heb eventjes met commentaar bepaalde gebieden afgezet... en als ik de hele if/else structuur commentaar maak, dan geeft ie wel output!

EDIT:
Heb je laatste edit getest, maar ook hier geen output...
 
Laatst bewerkt:
Fout gevonden!

in
PHP:
if(isset($_GET['page'])) && !empty($_GET['page'])) {

heb ik een ) teveel staan achter de eerste isset... bij het weghalen kreeg ik gelijk weer output! :D
 
haha doe je iets teveel krijg je gelijk helemaal nix. Je had toch je report_error(E_ALL) staan? vreemd dat hij dat dan niet melde
 
Nogal ja, zoieso is het vreemd dat ie niks melde toen dat E_ALL er niet bij stond... Het zou op zen minst een parse fout moeten geven ofzo
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan