THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour,
aujourd'hui était le grand jour, première mise en ligne d'un site développé avec thelia mais deux soucis apparaissent:

1 - des messages d'erreurs en fond sur la page redirigeant vers paypal (strict standards)

2 - un affichage faussé une fois la première commande passée.

..............................

1. J'ai cherché sur le forum des réponses et j'en ai trouvé mais mon hébergeur ne me laisse pas accès au php.ini pour stopper l'affichage des erreurs et une modification dans le .htaccess pour stopper aussi cet affichage me fait une "500 internal server error". (d'après ce que j'ai lu ailleurs c'est dû à l'utilisation (non utilisation?) du mode CGI?).
Auriez-vous une autre idée que ces deux-ci pour stopper cet affichage ?

2. Je m'explique, après la première commande passée, (paypal sandbox ok, envois mails ok, commande présente en BDD) lors du retour au site, le moteur thelia ne semble pas "raccrocher", tous les liens sont affichés comme dans le html (sous safari) (ex: ::panier::, ::facturationlivraison::). Pouvez-vous m'aider à régler ceci ? J'imagine qu'il y a une remise à zéro après la première commande qui va trop loin ! (PS/ A partir d'un autre ordinateur (internet explorer) je n'ai plus ce souci...)

Thelia 1.5.4.2 / PHP 5.4.21

Par avance merci pour votre aide ! smile

Last edited by SV-2013 (18-11-2013 16:55:05)

Offline


voici les messages d'erreurs (au cas où se cacherait du très important...)


Strict Standards: Declaration of Venteprod::charger() should be compatible with Requete::charger() in /home/lesediti/public_html/classes/Venteprod.class.php on line 25

Strict Standards: Declaration of Variable::charger() should be compatible with Requete::charger() in Unknown on line 0

Strict Standards: Declaration of Client::charger() should be compatible with Requete::charger() in Unknown on line 0

Strict Standards: Declaration of Produit::charger() should be compatible with Requete::charger() in /home/lesediti/public_html/classes/Produit.class.php on line 26

Strict Standards: Declaration of Baseobjdesc::exist_key() should be compatible with Baseobj::exist_key($key, $value, $table, $lang = NULL) in Unknown on line 0

Strict Standards: Declaration of Produitdesc::charger() should be compatible with Requete::charger() in /home/lesediti/public_html/classes/Produitdesc.class.php on line 25

Strict Standards: Declaration of Commande::charger() should be compatible with Requete::charger() in Unknown on line 0

Strict Standards: Declaration of Promo::charger() should be compatible with Requete::charger() in Unknown on line 0

Strict Standards: Declaration of Adresse::charger() should be compatible with Requete::charger() in Unknown on line 0

Strict Standards: Declaration of Administrateur::charger() should be compatible with Requete::charger() in Unknown on line 0

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/lesediti/public_html/classes/Venteprod.class.php:25) in /home/lesediti/public_html/client/plugins/paypal2/paiement2.php on line 30

Offline


Cherche sur le forum, tu vas trouver...


OpenStudio Toulouse

Offline


Bonjour !
merci pour ta réponse rapide Roadster !
j'ai caché les erreurs php, en revanche, je pense comprendre que le dernier message d'erreur
(Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/lesediti/public_html/classes/Venteprod.class.php:25) in /home/lesediti/public_html/client/plugins/paypal2/paiement2.php on line 30)
est la source du problème au retour du paiement. Mais je ne vois pas comment le régler, je ne fois pas d'erreur de syntaxe dans paiement2.php ni Venteprod.class.php que je n'ai pas modifiés (!).

Ce que je comprends (arrêtez moi si je me trompe..) c'est que j'ai un souci de session une fois revenu du paiement et du coup je n'ai plus de langue choisie et thelia n'affiche que le code sans traduction (ex: ::panier::). Or ca ne m'arrive que sur safari. (Mozilla, chrome n'ont pas le souci.) Que dois-je changer ?

Voici les codes des deux fichiers:

paiement2.php

<?php

require_once __DIR__ . "/../fonctions/autoload.php";

class Venteprod extends Baseobj{

	public $id;
	public $ref;
	public $titre;
	public $chapo;
	public $description;
	public $quantite;
	public $prixu;
	public $tva;
	public $commande;
	public $parent;

	const TABLE="venteprod";
	public $table=self::TABLE;

	public $bddvars = array("id", "ref", "titre", "chapo", "description", "quantite", "prixu", "tva", "commande", "parent");

	public function __construct($id = 0){
		parent::__construct();

		if($id > 0)
			 $this->charger($id);
	}

	public function charger($id){
		return $this->getVars("select * from $this->table where id=\"$id\"");
	}

	public function delete() {

		// Supprimer les ventedeclidisp associés
		$this->delete_cascade('Ventedeclidisp', 'venteprod', $this->id);

		parent::delete();
	}
}
?>

et Venteprod.class.php

<?php

require_once __DIR__ . "/../fonctions/autoload.php";

class Venteprod extends Baseobj{

	public $id;
	public $ref;
	public $titre;
	public $chapo;
	public $description;
	public $quantite;
	public $prixu;
	public $tva;
	public $commande;
	public $parent;

	const TABLE="venteprod";
	public $table=self::TABLE;

	public $bddvars = array("id", "ref", "titre", "chapo", "description", "quantite", "prixu", "tva", "commande", "parent");

	public function __construct($id = 0){
		parent::__construct();

		if($id > 0)
			 $this->charger($id);
	}

	public function charger($id){
		return $this->getVars("select * from $this->table where id=\"$id\"");
	}

	public function delete() {

		// Supprimer les ventedeclidisp associés
		$this->delete_cascade('Ventedeclidisp', 'venteprod', $this->id);

		parent::delete();
	}
}
?>

Merci pour votre aide

Offline


Bon, j'ai déplacé mon session_start() au tout début de paiement2.php juste après les <?php et ca semble régler pas mal d'erreurs.
Cependant, subsistent celles-ci :

Strict Standards: Declaration of Venteprod::charger() should be compatible with Requete::charger() in /home/lesediti/public_html/classes/Venteprod.class.php on line 24

Strict Standards: Declaration of Variable::charger() should be compatible with Requete::charger() in Unknown on line 0

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/lesediti/public_html/client/plugins/paypal2/paiement2.php on line 123


Or la ligne 123 de paiement2.php est comprise dans ce code :

<?php
		$venteprod = new Venteprod();
		$query = "select * from $venteprod->table where commande=".$_SESSION["navig"]->commande->id;
		$resul = mysql_query($query);
		$i=0;
		while($row = mysql_fetch_object($resul)){ 
			$i++;
			?>

et de nouveau c'est une histoire avec $_SESSION... Quelqu'un peut-il m'aider à comprendre ceci ?

Et aussi: Les deux premiers messages d'erreurs sont bien des messages anodins témoignant juste d'une incompatibilité anodines que je peux cacher ? smile

Offline


Ah pardon, ca n'a rien réglé de déplacer session_start en début de page, une fois arrivé sur sandbox, le panier a disparu. C'est donc bien cette session qui pose problème...

  • manu
  • faï tot petar miladiu

Offline


fait ça :

$query = "select * from $venteprod->table where commande=".$_SESSION["navig"]->commande->id;
echo $query; exit;
$resul = mysql_query($query);

Pour voir la tronche de la requête, elle n'a pas l'air d'être bonne.


http://doc.thelia.net/
http://thelia.net/modules
http://raynaud.io
PGP public Key : 0xC6E546A6

Offline


Bonjour, merci pour ta réponse.
Le message d'erreur est donc maintenant:

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/lesediti/public_html/classes/Venteprod.class.php:24) in /home/lesediti/public_html/client/plugins/paypal2/paiement2.php on line 30

select * from venteprod where commande=19

Offline


Mais en fait, maintenant le message d'erreur ne correspond plus à la ligne 123, et donc plus à cette requête, parce que j'ai remis le session_start après les includes.

Offline


Bon, maintenant juste après cette page d'erreur (qui est la page d'attente avant paypal sandbox), je ne tombe plus le récapitulatif de ma commande avant d'entrer mes coordonnées paypal mais sur https://www.sandbox.paypal.com/home. Etrange je n'avais pas ça hier.
Du coup, si quelqu'un peut m'aider, j'en suis au même état que mon message d'hier (17/11) à 16h23...
merci par avance

Offline


Si ton script "ecrit" quelque chose (par exemple, un message d'erreur) avant le session_start(), la session ne peut pas être créée. D'ou le message d'erreur suivant :"Cannot send session cache limiter - headers already sent (output started at  ..."

"output started at" te dit dans quel fichier et à quelle ligne l'écriture a commencé.

Tu as toutes les réponses pour trouver ton problème.


OpenStudio Toulouse

Offline


Bonjour roadster, je pensais avoir compris ce que tu m'expliques sur le forum, mais les 'includes' de début de paiement2.php (cité dans un post précédent) peuvent-ils en être la cause ? Quand j'ai mis mon session_start avant les includes j'avais un autre message d'erreur (message de 00:41)...

Offline


Ma pomme wrote:

"output started at" te dit dans quel fichier et à quelle ligne l'écriture a commencé.

Je ne peux pas te dire mieux.


OpenStudio Toulouse

Offline


SV-2013, sauf erreur de ma part ta problématique c'est juste que tu n'as pas totalement réglé le problème du "Strict Standards".

Comme le dis roadster ton problème de session n'est pas un problème de sessions.
C'est l'erreur "Strict Standards" qui génère cet autre problème.

Changes donc le niveau d'erreur sur le fichier concerné et tout devrait rentrer dans l'ordre.


Plugins : Modèles Thelia | Boucle libre | Rubriques déclinables en produits | Colissimo Access/Expert

Offline


Hm d'accord je pense que je n'avais pas compris qu'en ajoutant :

error_reporting( E_ALL ^ E_NOTICE ^ E_DEPRECATED ^ E_STRICT );

avant la première erreur du fichier, je ne 'cachais' pas les erreurs, je les 'supprimais'. Au final je m'inquiétais pour quelque chose qui n'existait pas...
Merci beaucoup pour votre aide alexandre, roadster et manu !