Arrêt prématuré d'un script

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Arrêt prématuré d'un script

par sadeq » 13 sept. 2008, 00:05

La seule partie qui peut provoquer l'arrêt de ton script présenté est le premier test :
if(!defined("Core")) {
    require_once("core/error.php");
    exit(error(E_INCLUDE_ERROR, "", __FILE__, 0));
} 
donc si les scripts précédant l'appel de ce fichier ne définissent pas la constante "Core" le script s'arrête (exit)

D'ailleurs ça sera un arrêt immédiat de ton script si tu suis ce qu'a préconisé Sékiltoyai

par Geoffroy57 » 12 sept. 2008, 23:35

merci, j'avais pas penser à cette technique :)

par Sékiltoyai » 12 sept. 2008, 18:20

Bah tu passes l'url du fichier incriminé (le fichier inclu) directement dans ton navigateur…

par Geoffroy57 » 12 sept. 2008, 18:14

l'instruction précédente était pour un test echo"" et elle a fonctionner.
Sinon hors mis ce test, il y a une inclusion, mais que l'on retrouve dans les informations de débuggage, sachant que tout fichier inclut n'y apparait qu'au retour de cette fonction, le problème ne vient donc pas de la, mais bien du fichier.
Une parse error, oui je pense aussi, mais je n'ai pas réussi à la déterminer, donc si vous pouviez m'aider svp!

Merci tout de même pour ces réponses

par Cyrano » 12 sept. 2008, 08:35

Si ce fichier n'est pas inclus, l'erreur est forcément en amont, à priori dans l'inclusion précédente. Difficile de la voir sur celui-ci. :-k

par Sékiltoyai » 12 sept. 2008, 07:16

C'est une parse error…

Arrêt prématuré d'un script

par Geoffroy57 » 12 sept. 2008, 06:30

Bonjour, je suis en train de créer un site internet "from scratch" et j'ai un petit problème depuis quelques temps que je n'arrive pas à résoudre. En effet, la page reste blanche et l'exécution du script s'arrête prématurément, quoique je fasse. J'ai installé un petit moteur pour obtenir des infos de debuggage, et j'ai bien remarquer que le script s'arrête sans raison lors de l'inclusion d'un fichier (l'instruction précédente fonctionne encore, et le fichier n'est pas indiquer comme inclut).

J'avais déjà certains problèmes comme cela, et ça venait du fait de la structure du fichier à inclure, mais la j'ai beau chercher je ne trouve rien!

Voila le log d'erreur en entier [URL supprimée] ou plus simplement [URL supprimée] pour n'afficher que les fichiers incluent.

Et voici le fichier qui ne veut pas être inclut et provoque un arrêt (sans erreur, notice, exception ou même erreur du CGI) du script :
<?php
if(!defined("Core")) {
	require_once("core/error.php");
	exit(error(E_INCLUDE_ERROR, "", __FILE__, 0));
}

function send_event($component, $state) {
	if (debug::component_profiled($component)) {
		register_tick_function(array("debug", "profiling_component"),
			$component, $state);
		
		debug::profile($component, $state);
		
		declare (ticks = 1) {
			require("components/" .
				$component . "/run.php");
		}
		
		debug::profile($component, $state);
		unregister_tick_function(array("debug", "profiling_component"));
	}
	else {
		require("components/" .
			$component . "/run.php");
	}
}

function special_events($events, $state, $component) {
	if ($events == null) {
		return;
	}
	$events = explode (";", $events);
	$arg = $state;
	$text = null;
	foreach($events as $event) {
		$state .= ":" . $event;
		send_event($component, $state);
		$state = $arg;
	}
}

function admin_event($events, $state, $component) {
	if (! defined("admin")) {
		return;
	}
	$state .= ":ADMIN";
	send_event($component, $state);
	special_events($events, $state, $component);
}

function components($state) {
	$stmt = $GLOBALS['db']->query("SELECT components, events
		FROM " . prefix . "_page
		WHERE name='" . page . "'");
	$data = $stmt->fetch(PDO::FETCH_OBJ);
	$stmt->closeCursor();
	
	if (defined("event_eq_tpl") &&
		event_eq_tpl == $state) {
		
		send_event("tpl_mgr", "SHOW;" . tpl . ";");
	}
	
	$components = explode(";", $data->components);
	
	foreach($components as $component) {
		send_event($component, $state);
		special_events($data->events, $state, $component);
		admin_event($data->events, $state, $component);
	}
}

abstract class component {
	protected $events;
	protected $config;
	private static $stmt_events = null;
	private static $stmt_config = null;
	
	public function __construct($component) {
		$layout = layout;
		if(defined("layout_real")) {
			$layout = layout_real;
		}
		if (self::$stmt_events == null &&
			self::$stmt_config == null) {
			
			self::$stmt_events = $GLOBALS['db']->prepare("SELECT *
				FROM " . prefix . "_component_layout_event
				WHERE component=':component'
				AND layout='" . $layout . "'");
			self::$stmt_events->bindParam(':component', $component);
			
			self::$stmt_config = $GLOBALS['db']->prepare("SELECT *
				FROM " . prefix . "_components
				WHERE name=':component'");
			self::$stmt_config->bindParam(':component', $component);
		}
		
		self::$stmt_events->execute();
		$data = self::$stmt_events->fetch(PDO::FETCH_OBJ);
		self::$stmt_events->closeCursor();
		$this->events = explode(";", $data->events);
		
		self::$stmt_config->execute();
		$data = self::$stmt_config->fetch(PDO::FETCH_OBJ);
		self::$stmt_config->closeCursor();
		$this->config = explode ("|", $data->config);
	}
	public function run($action);
}

abstract class plug_here extends component {
	protected $plugins;
	private static $stmt = null;
	protected function __construct($component) {
		if (self::$stmt == null) {
			self::$stmt = $GLOBALS['db']->prepare("SELECT version
				FROM " . prefix . "_components
				WHERE name=':component'");
			self::$stmt->bindParam(':component', $component);
		}
		parent::__construct($component);
		self::$stmt->execute();
		$data = self::$stmt->fetch(PDO::FETCH_OBJ);
		$version = $data->version;
		
		$this->plugins = array();
		$plugins = getfiles("components/" . $component . "/plugins/",
			"php");
		foreach($plugins as $plugin):
			require_once($plugin);
			$plugin_name = substr($plugin, 0, strlen(
				"components/" . $component . "/plugins/"));
			$this->plugins[] = $plugin_name;
			eval($plugin_name . "::init(" . $version . ");");
		endforeach;
	}
	protected function plug_point($point) {
		foreach($this->plugins as $plugin):
			eval($plugin . "::plug_point(" . $point . ");");
		endforeach;
	}
}

abstract class plugin {
	abstract static protected $name;
	abstract static protected $version;
	abstract static protected $component;
	static public function init($version) {
		if (self::version_matches($version) &&
			self::sql_inited($version)) {
			
		}
	}
	static private function version_matches($version) {
		if ((is_array(self::$version) &&
			in_array($version, self::$version) ||
			$version == self::$version)):
			
			return true;
		endif;
		return false;
	}
	static private function db_inited($version) {
		
	}
}
?>
Merci d'avance!