[RESOLU] dois je désactiver le php warning error ?

Petit nouveau ! | 2 Messages

19 déc. 2012, 10:32

Bonjour,

J'ai le message d'erreur suivant lorsque que je lance un programme php (voir ligne de programmation en erreur, plus bas)

J'ai lu dans certains forum qu'il fallait désactivé le "php error warnings".

Est ce viable comme action ?

Merci d'avance pour votre support

Cdlt

mrhaiem

1/Warning: stristr() [function.stristr]: Empty delimiter in D:\DONNEES\wamp\www\Gladis\external_scripts\inbound_email.php on line 159

2/Invalid query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'utilitaire e-mails entrants', '4', '30', '1355869203', '0', '4', '1', '5')' at line 1
Error Number: 1064
Query Syntax: INSERT INTO aims_core_log (log_text, id, item_id, create_date, item_identifier, log_item_sequence, security_id, role_id) VALUES ('Créé par l'utilitaire e-mails entrants', '4', '30', '1355869203', '0', '4', '1', '5')Unable to process message number: 1 - processing has been halted.
The message subject is :RE: Ticket numéro P2IN-0612797 (Priorité : P4) affecté au groupe GTS_PAR_EUS_VIR.EPAL.OPE_L3.

Technical information :

- php version : 5.3.5
- script information

//Detect blocked subject words and halt processing.
$subjectMatchArray = explode(',',$inboundEmailSettings['SUBJECT_MATCH_'.$i]);
if (is_array($subjectMatchArray)){
foreach ($subjectMatchArray as $matchString){
if (stristr($subject,trim($matchString))){ ------------------------------------------>line 159
$subjectMatch = true;
}
}
}
if ($subjectMatch == true) {
$success = true;

Cordialement

mrhaiem

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

19 déc. 2012, 10:45

salut,


NON, désactiver e rapport d'erreur (surtout en dev) c'est faire l'autruche.

et c'est certain que ce n'est pas parce que tu as la tête dans le sable que cela va aller mieux :mrgreen:

Il faut corriger ces erreurs.

1/ : ton délimiteur est vide. en clair trim($matchString) retourne une chaine vide. si ton délimiteur doit être un espace trim l'envlève => système a revoir.


2/ ton erreur est dûe a la présence d'une quote ( ' ) dans la chaîne de caractère que tu souhaite utiliser : "par l'utilita"
il faut absolument protéger tes chaînes contre les injections SQL (et autre truc du genre).
Pour cela, si tu utilise :
- l'extension mysql : mysql_real_escape_string
- l'extension mysqli : mysql_real_escape_string
- PDO : la méthode quote


@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 2278 Messages

19 déc. 2012, 10:51

Bjr,
En général, ce qui est conseillé par les gens sérieux, c'est de développer en autorisant l'affichage du maximum d'erreurs:
error_reporting(E_ALL);
parce que les messsages d'erreur aident à corriger. (J'en sais quelque chose, développant sur un système Debian qui interdit cet affichage, je me retrouve avec des pages blanches pour les erreurs fatales, sans autre ressource que mes talents de limier: tests très fréquents, au moindre changement...).
et de mettre
error_reporting(0);
quand on en est au stade de la production, parce que l'affichage des messages d'erreur pourrait aider un utilisateur malintentionné à violer le système.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Petit nouveau ! | 2 Messages

09 janv. 2013, 10:15

pb résolu.Merci !!! et meilleurs voeux à tous pour cette nouvelle année qui commence !!!