Je n'ai plus accès à mon module Newsletter ds l'interface administrateur

Signaler
Messages postés
19
Date d'inscription
samedi 19 septembre 2009
Statut
Membre
Dernière intervention
8 décembre 2010
-
Messages postés
19
Date d'inscription
samedi 19 septembre 2009
Statut
Membre
Dernière intervention
8 décembre 2010
-
Bonjour,
je suis archi débutante; mon webmaster m'a planté et j'essaierai de me débrouiller toute seule avec mon site;

j'ai le message suivant qd je veux accéder à Wanetter ( module gestionnaire newsletter intégré à mon site):

Warning: Cannot modify header information - headers already sent by (output started at /homez.20/site/www/newsletter/includes/config.inc.php:3) in /homez.20/site/www/newsletter/start.php on line 37

ds config.inc.php, il y a les paramètres d'accès à la base de données ( mot de passe changé tout récemment)

et à start.php, on trouve :
if( !defined('NL_INSTALLED') )

{

$use_refresh = @preg_match("#Microsoft|WebSTAR|Xitami#i", getenv('SERVER_SOFTWARE'));

$header_location = ( $use_refresh ) ? 'Refresh: 0; URL=' : 'Location: ';


header($header_location . $waroot . 'setup/install.php');

exit;

}


ligne37, c'est $header_location = ( $use_refresh)...............

c'est surement évident à un tas de gens ce qui se passe là , moi, je commence à comprendre mais comment faire pour que cette ligne là ne bloque plus le processus?

l'effacer?

20 réponses

Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Salut,

Les headers HTTP doivent être envoyés avant tout autre envoi.
En l'occurence tu essais d'envoyer les headers de la ligne 37 alors qu'il y a déjà eu des caractères envoyés au client (dans le fichier config.inc.php à la ligne 3) Il faudrait voir ce fichier pour éventuellement pouvoir t'aider.

Ce module était il déjà installé ?
Si c'est le cas il faudrait savoir où est défini la constante NL_INSTALLED, il y a peut être un autre pb.

Cordialement,


Kohntark -
Messages postés
19
Date d'inscription
samedi 19 septembre 2009
Statut
Membre
Dernière intervention
8 décembre 2010

Salut, merci pour ton aide;
ds le fichier config.inc.php:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<?php // // Paramètres d'accés à la base de données // Ne pas modifier ! // define('NL_INSTALLED', true); $dbtype = "mysql"; etc, etc......
</head>




</html>

la ligne 3 c'est:
<head>

où est définie la constante NL_INSTALLED?
je regarde:

j'ai trouvé ça dans le fichier setup/install.php


if( defined('NL_INSTALLED') )

{

$db = new sql($dbhost, $dbuser, $dbpassword, $dbname);


if( !$db->connect_id )

{

$error = true;

$msg_error[] = ' Impossible de se connecter à la base de données ';

}


$sql = "SELECT language, urlsite, path, version, hebergeur FROM " . CONFIG_TABLE;

if( !($result = $db->query($sql)) )

{

exit(' Impossible d\'obtenir la configuration du script ');

}


$old_config = $db->fetch_array($result);


$old_version = $old_config['version'];

$urlsite = $old_config['urlsite'];

$urlscript = $old_config['path'];

$language = $old_config['language'];

$hebergeur = $old_config['hebergeur'];


require($waroot . 'language/lang_' . $language . '.php');


$login = FALSE;


et dans setup/setup.inc.php,

j'ai entre autres, ça:



if( count($supported_db) == 0 )

{

exit(' Sorry but WAnewsletter 2.2.x requires a database MySQL 3.x/4.x, Microsoft SQL Server or PostgreSQL 7 ');

}



require($waroot . 'includes/template.php');



$config_file = '<' . "?php\n\n";

$config_file .= "//\n";

$config_file .= "// Paramètres d'accés à la base de données\n";

$config_file .= "// Ne pas modifier !\n";

$config_file .= "//\n";

$config_file .= "define('NL_INSTALLED', true);\n\n";

$config_file ."\$dbtype "$dbtype";\n\n";

$config_file ."\$dbhost "$dbhost";\n";

$config_file ."\$dbuser "$dbuser";\n";

$config_file ."\$dbpassword "$dbpassword";\n";

$config_file ."\$dbname "$dbname";\n\n";

$config_file ."\$prefixe "$prefixe";\n\n";

$config_file .= '?' . '>';



$template = new Template($waroot . 'templates/');



?>



oui, le module était déjà installé; fallait changer le mot de passe de la base de données, pas possible autrement;
apparemment , ç'est ça qui met le brin.

je n'y connais rien en html et php mais suis obligée de m'y mettre par la force des choses;

est ce que tu vois ce qu'il y a à faire pour ce prob?

MERCI.
Messages postés
19
Date d'inscription
samedi 19 septembre 2009
Statut
Membre
Dernière intervention
8 décembre 2010

ah, au fait, pour la newsletter,
c'est Wanewsletter, si tu connais.

cordialement,
Messages postés
19
Date d'inscription
samedi 19 septembre 2009
Statut
Membre
Dernière intervention
8 décembre 2010

Que veut dire cela?:

if( !defined('NL_INSTALLED') )

{

$use_refresh = @preg_match("#Microsoft|WebSTAR|Xitami#i", getenv('SERVER_SOFTWARE'));

$header_location = ( $use_refresh ) ? 'Refresh: 0; URL=' : 'Location: ';


header($header_location . $waroot . 'setup/install.php');

exit;

}

merci pour votre aide,
Messages postés
567
Date d'inscription
mercredi 4 octobre 2006
Statut
Membre
Dernière intervention
30 août 2011
10
Hello,

if( !defined('NL_INSTALLED') )
Si la constante 'NL_INSTALLED' n'est pas définie (A mon avis cette constante est définie quand ton module est correctement installé.

On redirige l'utilisateur vers une page d'instalation du module probablement... dans le dossier setup/install.php de ton module...

Résumé : Si le module n'est pas installé, on redirige vers l'instal...


_________________________________
Min iPomme
Messages postés
19
Date d'inscription
samedi 19 septembre 2009
Statut
Membre
Dernière intervention
8 décembre 2010

mais le module a été installé, ça a fonctionné correctement pendant des mois ( c'est Wanewsletter).
j'ai juste changé le mot de passe de la base de données dans le fichier newsletter/admin/config.inc.php.

si je vire ce truc if( !defined('NL_INSTALLED') ).........................exit;)
ça devrait marcher, non?
Messages postés
567
Date d'inscription
mercredi 4 octobre 2006
Statut
Membre
Dernière intervention
30 août 2011
10
Non ne fais pas ça.

Tu dois avoir une erreur ou une ligne manquante dans ton fichier
newsletter/includes/config.inc.php

peux écrire son contenu ici en prenant soins de remplacer le nom, le mot de passe, le nom d'utilisateur de la base de donnée par des *****.

D'ailleurs ca parait étrange qu'il se trouve dans le dossier admin...
_________________________________
Min iPomme
Messages postés
19
Date d'inscription
samedi 19 septembre 2009
Statut
Membre
Dernière intervention
8 décembre 2010

non, tu as raison,
ce n'est pas dans le dossier admin
voilà, le fichier newsletter/includes/config.inc.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<?php //
// Paramètres d'accés à la base de données
// Ne pas modifier !
// define('NL_INSTALLED', true);
$dbtype = "mysql";
$dbhost = "mysqlXXXX";
$dbuser = "truc-muche";
$dbpassword = "XXXXXXX";
$dbname = "truc-muche";
$prefixe = "wa_";
?>
</head>




</html>
où est l'erreur?
merci pour ton aide et le conseil pour le site zéro.
Odile.
Messages postés
567
Date d'inscription
mercredi 4 octobre 2006
Statut
Membre
Dernière intervention
30 août 2011
10
Alors en php, // signifie que la ligne est un commentaire. Quand le serveur parcours une page, si la ligne commence par // il ne cherche même pas à lire la suite de la ligne, il passe à la ligne suivante.

Ici comme tu le vois la ligne // define('NL_INSTALLED', true); est commentée. Pour le serveur, la constante NL_INSTALLED ne seras donc jamais définie.

Pour la définir, il suffi de décomanter cette ligne en supprimant les //.

Je pense aussi que le fichier ne devrais pas contenir
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
...
</head>




</html>

Mais juste le code php comme cela :

<?php
//
// Paramètres d'accés à la base de données
// Ne pas modifier !
define('NL_INSTALLED', true);
$dbtype = "mysql";
$dbhost = "mysqlXXXX";
$dbuser = "truc-muche";
$dbpassword = "XXXXXXX";
$dbname = "truc-muche";
$prefixe = "wa_";
?> 


Par la suite quand le serveur arriveras à la ligne
if( !defined('NL_INSTALLED') )
de ton autre fichier, il verras qu'il à bien crée la constante NL_INSTALLED avec comme valeur true, du coup il rentreras pas dans le if...
_________________________________
Min iPomme
Messages postés
19
Date d'inscription
samedi 19 septembre 2009
Statut
Membre
Dernière intervention
8 décembre 2010

Alors voilà ce que j'ai maintenant:
Warning: Cannot modify header information - headers already sent by (output started at /homez.20/itibat/www/newsletter/start.php:3) in /homez.20/itibat/www/newsletter/start.php on line 3


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<?php
/******************************************************************* * *
Fichier : start.php * Créé le : 04 juillet 2002 *
Dernière modif : 15 aout 2003*
Email : wascripts@phpcodeur.net *
* Copyright © 2002-2003 phpCodeur *
*******************************************************************
/ /******************************************************************* *
This program is free software; you can redistribute it and/or *
modify it under the terms of the GNU General Public License as *
published by the Free Software Foundation; either version 2 of *
the License, or (at your option) any later version. *
******************************************************************

/ if( !defined('IN_NEWSLETTER') )
{
exit('No hacking');
}
error_reporting(E_ALL);
$starttime = array_sum(explode(' ', microtime()));
include($waroot . 'includes/config.inc.php');

etc......


??????
je file, à tout à l'heure,
merci
Messages postés
567
Date d'inscription
mercredi 4 octobre 2006
Statut
Membre
Dernière intervention
30 août 2011
10
Le fichier start.php ne devrais lui non plus pas contenir
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head> 

...

Comment ca se fais que tous ces fichiers aient
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head> 

Alors que si tu télécharge le module, il ne contient pas ces lignes...
_________________________________
Min iPomme
Messages postés
19
Date d'inscription
samedi 19 septembre 2009
Statut
Membre
Dernière intervention
8 décembre 2010

C'est l'éditeur Kompozer qui fait apparaître cela;
mais qd mon frère édite le même fichier avec Dreamweaver,
ça n'y est pas...

donc, je ne pense pas que ce soit le problème;
je continue de chercher ,
Odile
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Re,

Tous les ingrédients sont là pour que ton problème mette du temps à être réglé, voir ne le soit pas ici :
- tu es débutante
- il s'agit d'un module (que je ne connais pas) qui est sans doute assez long et qui, peut être, fait intervenir un paquet d'include ou autres qui corsent le deboguage sur un forum.

Je ne connais que de nom Kompozer et Dreamweaver, mais si l'un d'eux t'ajoute des doctype/head/html un conseil, mets le à la benne.
Afin de lever le doute là dessus ouvre tes fichiers avec un simple éditeur de texte (notepad par exemple)

Ton problème ne nécessiterait peut être que quelques dizaines de minutes à être réglé en ayant accès au ftp, mais ici ça risque de mettre un peu plus de temps.
Je n'ai pas pris le temps de télécharger le script. Si il a été modifié par ton ex webmaster il serait bien que tu donnes l'accès à la totalité des scripts concernés (en les affichant sur ton site à l'abri du regard des internautes)
Attention également : ce script date de 2003. Il est vieux, et PHP a bien évolué depuis. Ainsi certaines fonctions peuvent désormais poser pb.

Cordialement,




Kohntark -
Messages postés
19
Date d'inscription
samedi 19 septembre 2009
Statut
Membre
Dernière intervention
8 décembre 2010

OK, ok....

en effet, ça risque de prendre pas mal de temps, cette histoire ...alors que mon site est censé être pro et qu'il est visité par une centaine de personnes par jour, actuellement...les messages d'erreur, ça la fiche mal!!!

mon frère a accès au ftp, mais il ne trouve pas pour l'instant...il manque de temps aussi;
Comment puis je faire pour donner l'accès à la totalité des scripts concernés? ( en les affichant sur mon site?? sais pas...je vais aussi poser la question à my brother)

Pour en revenir à nos moutons,
j'ai trouvé ceci dans newsletter/newsletter.php

if( !defined('IN_WA_FORM') && !defined('IN_SUBSCRIBE') )

{

exit('No hacking');

}
define('IN_NEWSLETTER', true);
$default_magic_quotes_runtime = get_magic_quotes_runtime();
require($waroot . 'start.php');
include($waroot . 'includes/functions.validate.php');

Dans la version 2006, de Wanewsletter, dans le fichier newsletter/start.php, j'ai trouvé ça:

if( !defined('IN_NEWSLETTER') )
{
exit('No hacking');
}

// @link http://bugs.php.net/bug.php?id =31440
if( isset($_REQUEST['GLOBALS']) || isset($_FILES['GLOBALS']) ) {
exit('GLOBALS overwrite attempt detected');
}

error_reporting(E_ALL);

$starttime = array_sum(explode(' ', microtime()));

et dans le fichier newsletter/newsletter.php de la version 2006, de Wanewsletter, j'ai ça:
if( !defined('IN_WA_FORM') && !defined('IN_SUBSCRIBE') )
{
exit('No hacking');
}

define('IN_NEWSLETTER', true);

//
// Compatibilité avec les version < 2.3.x
//
if( !defined('WA_ROOTDIR') )
{
if( !isset($waroot) )
{
exit("Le répertoire de Wanewsletter n'est pas défini!");
}

define('WA_ROOTDIR', rtrim($waroot, '/'));
}

$default_magic_quotes_runtime = get_magic_quotes_runtime();
$default_error_reporting = error_reporting(E_ALL);

require WA_ROOTDIR . '/start.php';
require WA_ROOTDIR . '/includes/functions.validate.php';



Encore merci pour tes conseils et j'espère qu'on trouvera bientôt une solution car je suis très embêtée.

Cordialement,

Odile
Messages postés
19
Date d'inscription
samedi 19 septembre 2009
Statut
Membre
Dernière intervention
8 décembre 2010

et dans newsletter/admin/admin.php,
on trouve ça aussi:
define('IN_NEWSLETTER', true);
require('./pagestart.php');
Messages postés
19
Date d'inscription
samedi 19 septembre 2009
Statut
Membre
Dernière intervention
8 décembre 2010

et dans newsletter/admin/pagestart.php

if( !defined('IN_NEWSLETTER') )

{

exit('No hacking');

}
Messages postés
567
Date d'inscription
mercredi 4 octobre 2006
Statut
Membre
Dernière intervention
30 août 2011
10
Stop stop stop !

Prends le temps de lire :

Comme on l'as déjà vu ensemble la fonction defined vérifie l'esistence d'une constante.

Le point d'exclamation sert à inverser un resultat (Si le résultat est vrais, il deviens faux...) le double && sert de ET.

Donc ici :
<?php
// Si la constante IN_WA_FORM n'est pas définie
// et si la constante IN_SUBSCRIBE n'est pas 
// définie
if( !defined('IN_WA_FORM') && !defined('IN_SUBSCRIBE') )
{
  // On quite l'application en affichant le message "No hacking" en gras.
  exit('No hacking');
} 
?>

Mais à quoi ca sert, et bien ca sert de sécurité, ca sert a vérifier que la page est bien incluse dans ton site et pas appelée toute seule...

Comme l'as dis avec raison kohntark, le débugge n'est pas évidant si nous n'avons pas accès aux site et aux sources, il semble qu'il y ai pas mal de choses à voir... En revanche n'écris surtout pas les infos de connexions de sur ton FTP ici

Je te conseil d'informer tes visiteurs de tes soucis par un message, qu'il sachent que tu travaille sur les erreurs qu'ils croient pas que c'est définitif...

_________________________________
Min iPomme
Messages postés
19
Date d'inscription
samedi 19 septembre 2009
Statut
Membre
Dernière intervention
8 décembre 2010

ET effectivement, je ne trouve pas la constante 'IN_WA_FORM'....
Messages postés
567
Date d'inscription
mercredi 4 octobre 2006
Statut
Membre
Dernière intervention
30 août 2011
10
Elle n'est pas obligatoirement dans le même fichier, elle peut-être dans un fichier parent... Cherche les fichiers qui appel celui ci via include('tonfichier.php'); ou include('chemin/de/tonfichier.php');...

Si tu es sur que ton Webmaster n'as pas touché à ces fichiers, je te conseil de re-télécharger le module et de le réinstaller...

_________________________________
Min iPomme
Messages postés
19
Date d'inscription
samedi 19 septembre 2009
Statut
Membre
Dernière intervention
8 décembre 2010

voici ce que j'ai trouvé dans la FAQ de Wanewsletter:
Cette fonctionnalité était demandée par plusieurs utilisateurs de Wanewsletter.

Pour définir une langue à utiliser avec le formulaire (sous réserve que cette langue soit installée dans Wanewsletter), il vous suffit d’ajouter la ligne suivante dans le code d’inclusion de newsletter.php qui est fourni par le générateur de formulaire : $language = 'francais';
Additionellement, vous pouvez également définir l’adresse URL à utiliser pour forger le lien de confirmation d’inscription ou désinscription.
Voici un exemple de code PHP intégrant ces deux ajouts.

[i]<?php
define('IN_WA_FORM', true);
define('WA_ROOTDIR', '/path/to/wanewsletter');

$language = 'english';
$formURL = 'http://mydomain.tld/en/myform';

include WA_ROOTDIR . '/newsletter.php';
?>/i

Note : Ces codes doivent être ajoutés avant l’inclusion du fichier newsletter.php (avant include()), non après.