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') )
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?
A voir également:
Je n'ai plus accès à mon module Newsletter ds l'interface administrateur
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.
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 ';
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?
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...
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?
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
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
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.
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
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!");
}
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...
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...
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.