NEWSLETTER AVEC BUTTON RADIO

Signaler
Messages postés
13
Date d'inscription
jeudi 11 décembre 2008
Statut
Membre
Dernière intervention
7 novembre 2009
-
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
-
Bonjour,

je suis tombé par hasard sur ce bout de code et j'aimerai l'utiliser mais il y a un message d'erreur du genre

Notice: Undefined variable: action in C:\Program Files\wamp\www\nouvelles\newsletter.php on line 34
Notice: Undefined variable: action in C:\Program Files\wamp\www\nouvelles\newsletter.php on line 43
Notice: Undefined variable: message in C:\Program Files\wamp\www\nouvelles\newsletter.php on line58

là je suis bloqué et je ne sais pas evolué est ce que quelqu'un peut m'aider svp ?

je colle les bouts de ce code ici

et ma bdd n'a que deux champs a savoir (id, email)




<?php
/*
*
* Pour toutes questions ou propositions, n'hésitez pas r
* me contacter par mail r l'addresse suivante:
*
* piranhaworld@gmail.com
*
* */

// CONNEXION A LA BASE DE DONNEE
// Les paramctres suivant sont propres r la base de données, ils doivent
// etre modifiés. Un fichier de configuration externe serait envisagable

$connexion=mysql_connect("localhost", "root", "");
mysql_select_db("TW_news",$connexion);

// La fonction presence_de_l_addresse_mail() teste la présence d'une addresse
// mail dans la base de donnée. Elle renvoie TRUE si elle est présente et
// FALSE dans le cas contraire

function presence_de_l_addresse_mail($mail) {

$requete="SELECT COUNT(*) AS resultat FROM newsletter WHERE mail='$mail'";
$retour_requete = mysql_query($requete);
$newsletter = mysql_fetch_array($retour_requete);
return ($newsletter['resultat']>0);
}

// PROGRAMME PRINCIPAL \\

if($action=="ajouter")
{
if (!presence_de_l_addresse_mail($mail))
{ // ajout de l'addresse email
$requete="INSERT INTO `newsletter` ( `id` , `mail` ) VALUES ('', '$mail');"; // requete
mysql_query($requete); // execution de la requete SQL
$message="Adresse e-mail ajoutée, merci de votre inscription";
}
else $message="Vous etes déja inscrit";
}

elseif ($action=="supprimer")
{
if (presence_de_l_addresse_mail($mail))
{ // suppression de l'addresse email
$requete="DELETE FROM newsletter WHERE mail = $mail"; // requete
mysql_query($requete); // execution de la requete SQL
$message="Adresse e-mail supprimée de la newsletter";
}
else $message="L'adresse e-mail n'existait pas dans la base de donnée";
}

echo "TW NEWSLETTER
<form name="newsletter" method="post" action="">
*
*
S'inscrire
*
Se désinscrire
*
</form>
$message";

// DECONNEXION A LA BASE DE DONNEE \\

mysql_close($connexion);?>

2 réponses

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
17
Salut,

Ce code, que tu as trouvé, nécessite pour fonctionner que dans la configuration de PHP, register_globals soit activé. Hors, pour des raisons de sécurité, cette directive est désactivée depuis longtemps maintenant.
Ce code est donc peu sécurisé a priori.
Il semble que le code attende que $action soit une variable passée dans $_GET. Donc il "suffirait" de :
$action = isset($_POST['action']) ? $_POST['action'] : '';

Idem pour $message, difficile de dire, je ne vois pas les numéros de lignes et j'ai un peu la flemme de compter ligne par ligne...
Peut-être que simplement $message = '' en début de script suffirait pour définir la variable et éviter le message d'erreur.

Mais bon, quand je vois le code, franchement, je te recommande de ne pas l'utiliser... C'est du vieux code, pas optimisé...

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
17
Pardon, je voulais dire :
que $action soit une variable passée dans $_POST


--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)