Envoyé mail aux sites refusés categorizator

Fermé
jeanmi - 2 mars 2009 à 13:35
 darakk - 18 mars 2009 à 19:00
Bonjour,

Je voudrais envoyé un mail aux sites refusés sur mon annuaire catégorizator, en effet le script envoi un mail aux sites acceptés mais pas aux sites refusés, je voudrais leur faire un petit mail du genre: ".Resoumettez votre site après avoir fait un lien vers notre annuaire"

J'ai essayé en vain de tripatouiller le fichier validate_site.php , mais je n'ai que des messages d'erreurs, je suis vraiment débutant en PHP

Une piste ??

Le fichier validate.php:

Voila le code:


<?php
//validation des sites en attentes
include("../data_bd_annuaire.php"); //variables de l'annuaire
include("../functions.php"); //fonctions de l'annuaire
include("secure.php"); //verification de la session + connexion a la BD

// si on a pas quitte dans secure.php, on peut continuer...

//creation de la requete pour aller chercher les infos admin
$sql_admin = "SELECT titre_site, email_master, url_rep, auto_validate, func_mail FROM $T_infos ";
//connexion a la BD
//on est deja connecte
//envoi de la requete
$res_admin = send_sql($sql_admin,"trouver les infos d'administration");
//pas de fin de connexion on en aura encore besoin plus tard

//traitement du resultat
$result_admin = mysql_fetch_array($res_admin,MYSQL_ASSOC);
$auto_validate = $result_admin["auto_validate"];
$func_mail = $result_admin["func_mail"];
$titre_site = $result_admin["titre_site"];
$email_master = $result_admin["email_master"];
$url_rep = trim( $result_admin["url_rep"], '/' );

$action = isset($_POST['action']) ? $_POST['action'] : '';

if ($action == "validate")
//validation des sites en attente
{
// recuperation des donnees
$site2validate = isset($_POST['site2validate']) ? $_POST['site2validate'] : array();
$id_cat_url2validate = isset($_POST['id_cat_url2validate']) ? $_POST['id_cat_url2validate'] : array();
$url2validate = isset($_POST['url2validate']) ? $_POST['url2validate'] : array();

foreach ($site2validate as $i => $c)
$site2validate[$i] = (int)$c;
foreach ($id_cat_url2validate as $i => $c)
$id_cat_url2validate[$i] = (int)$c;
if (!get_magic_quotes_gpc())
{
foreach ($url2validate as $i => $u)
$url2validate[$i] = addslashes($u);
}
?>
<b>RÈsultats de la validation des sites :</b>
<br /><br />
<?php
$nb_site2validate = count($site2validate);
$url_site2add = array();
$url_site2del = array();
for ($i=0;$i<$nb_site2validate;$i++)
{
//si on a coche la case, on retient l'url (et sa cat) a ajouter dans un tableau
if ($site2validate[$i] == 1)
{
$url_site2add[] = $url2validate[$i];
$id_cat_site2add[] = $id_cat_url2validate[$i];
}
elseif ($site2validate[$i] == -1)
{
$url_site2del[] = $url2validate[$i];
$id_cat_site2del[] = $id_cat_url2validate[$i];
}
}
$nb_site2add = count($url_site2add);
$nb_site2del = count($url_site2del);

if ($nb_site2add + $nb_site2del)
//si on a valide ou refuse au moins un site
{
for($i=0;$i<$nb_site2add;$i++)
{
//on est deja connecte
$sql = "SELECT * FROM $T_sites_in_wait WHERE url = '$url_site2add[$i]' AND id_cat = '$id_cat_site2add[$i]' ";
//recherche de l'enregistrement dans la table d'attente
$res = send_sql($sql,"sÈlectionner les sites a ajouter dans site_in_wait");
$resultat = mysql_fetch_array($res,MYSQL_ASSOC);

//comme les donnees ne proviennent pas des GPC, il faut obligatoirement ajouter les \
$resultat["titre"] = addslashes($resultat["titre"]);
$resultat["nom_proprio"] = addslashes($resultat["nom_proprio"]);
$resultat["description"] = addslashes($resultat["description"]);

if (mysql_num_rows($res))//si on a un resultat
{
//on ajoute le site dans la table des sites
$sql = "INSERT INTO $T_sites (id_cat,titre,description,url,url_image,nom_proprio,email_proprio,date_validation) VALUES ('$resultat[id_cat]','$resultat[titre]','$resultat[description]','$resultat[url]','$resultat[url_image]','$resultat[nom_proprio]','$resultat[email_proprio]',CURRENT_DATE) ";
$ins = send_sql($sql,"insÈrer le site dans la table des sites de l'annuaire");
//on le supprime dans les tables en attente
$sql = "DELETE FROM $T_sites_in_wait WHERE url = '$url_site2add[$i]' AND id_cat = '$id_cat_site2add[$i]'";
$del = send_sql($sql,"supprimer le site $url_site2add dans la table des sites en attente");
echo "Le site \"".htmlspecialchars($url_site2add[$i])."\" vient d'Ítre ajoutÈe dans votre annuaire\n<br />\n";
if($func_mail)
//si on sait envoyer des mails
{
//envoi d'un mail au webmaster du site ajoute
$sqlc = "SELECT cat_name FROM $T_categories WHERE id = '$resultat[id_cat]' ";
$resc = send_sql($sqlc,"sÈlectionner le nom de la catÈgorie du site");
$resultatc = mysql_fetch_array($resc,MYSQL_ASSOC);
//preparation du message
$message = "Votre site $url_site2add[$i] vient d'Ítre acceptÈ et donc ajoutÈ dans l'annuaire de $titre_site\n\n";
$message .= "Vous pouvez venir le voir dans notre annuaire ‡ l'adresse suivante : $url_rep/".id_to_url($resultat['id_cat'],$resultatc['cat_name'],'1')."\n";
//envoi du mail
send_mail($resultat["email_proprio"],"Votre site est acceptÈ",htmlspecialchars($message),$email_master);
} //fin if func_mail
}
else //pas de resultat trouve
{ echo "Erreur lors de la sÈlection, impossible de retrouver le site ‡ insÈrer dans la table des sites en attente !\n<br />\n"; }
} //fin for

//suppression des sites a refuser
echo "<br /><br />\n";
for ($i=0;$i<$nb_site2del;$i++)
{
$sql = "DELETE FROM $T_sites_in_wait WHERE url = '$url_site2del[$i]' AND id_cat = '$id_cat_site2del[$i]' ";
$del = send_sql($sql,"supprimer le site $url_site2del dans la table des sites en attentes (admin)");
echo "Le site \"".htmlspecialchars($url_site2del[$i])."\" a ÈtÈ refusÈ !\n<br />\n";
}
}//fin du if (nb_site2add + nb_site2del)
//envoi d'un mail au site refusé, ajout jeanmi
{
//envoi d'un mail au webmaster du site refusé
$sqlc = "SELECT cat_name FROM $T_categories WHERE id = '$resultat[id_cat]' ";
$resc = send_sql($sqlc,"sÈlectionner le nom de la catÈgorie du site");
$resultatc = mysql_fetch_array($resc,MYSQL_ASSOC);
//preparation du message
$message = "Votre site $url_site2add[$i] vient d'Ítre refusÈ dans l'annuaire de $titre_site\n\n";
$message .= "Vous auriez mis notre logo ‡ l'adresse suivante \n";
//envoi du mail
send_mail($resultat["email_proprio"],"Votre site est refusÈ",htmlspecialchars($message),$email_master);
} //fin if func_mail
}

else
//aucun site selectionne
{ echo "Aucun site ‡ valider/supprimer !"; }

//fin de la connexion
mysql_close($lk);
?>
<br /><br />
<a href="<?php echo addsess2url("admin.php",$session_id); ?>">Retour ‡ l'administration de l'annuaire</a>
<?php
exit;
} //fin du if action==validate

if ($action == "revalidate")
//revalidation des sites mis en attente suite a une verification
{
// recuperation des donnees
$site2revalidate = isset($_POST['site2revalidate']) ? $_POST['site2revalidate'] : array();
$url2revalidate = isset($_POST['url2revalidate']) ? $_POST['url2revalidate'] : array();

foreach ($site2revalidate as $i => $s)
$site2revalidate[$i] = (int)$s;
if(!get_magic_quotes_gpc())
{
foreach ($url2revalidate as $i => $u)
$url2revalidate[$i] = addslashes($u);
}
?>
<b>RÈsultats de la revalidation des sites :</b>
<br /><br />
<?php
$nb_site2revalidate = count($site2revalidate);
$url_site2react = array();
$url_site2del = array();
for ($i=0;$i<$nb_site2revalidate;$i++)
{
//si on a coche la case, on retient l'url (et sa cat) a ajouter dans un tableau
if ($site2revalidate[$i] == 1)
{ $url_site2react[] = $url2revalidate[$i]; }
elseif ($site2revalidate[$i] == -1)
{ $url_site2del[] = $url2revalidate[$i]; }
}
$nb_site2react = count($url_site2react);
$nb_site2del = count($url_site2del);

if ($nb_site2react + $nb_site2del)
//si on a valide ou refuse au moins un site
{
for($i=0;$i<$nb_site2react;$i++)
{
//creation de la requete
$upd = "UPDATE $T_sites SET activation = 1 WHERE url = '$url_site2react[$i]' ";
//on est deja connecte
$res = send_sql($upd,"rÈactiver le site");
echo "Le site $url_site2react[$i] vient d'Ítre rÈactiver\n<br />\n";
} //fin for

//suppression des sites a refuser
echo "<br /><br />\n";
for ($i=0;$i<$nb_site2del;$i++)
{
//creation de la requete
$sql = "DELETE FROM $T_sites WHERE url = '$url_site2del[$i]' ";
$del = send_sql($sql,"supprimer le site $url_site2del dans la table des sites en attentes (admin)");
echo "Le site $url_site2del[$i] vient d'Ítre supprimÈ !\n<br />\n";
}
}//fin du if (nb_site2react + nb_site2del)
else
//aucun site selectionne
{ echo "Aucun site ‡ revalider/supprimer !"; }

//fin de la connexion
mysql_close($lk);
?>
<br /><br />
<a href="<?php echo addsess2url("admin.php",$session_id); ?>">Retour ‡ l'administration de l'annuaire</a>
<?php
exit;
} //fin du if action==revalidate

?>
<html>
<head>
<title>Validation des sites en attente dans l'annuaire</title>
</head>
<body style="background-color:#FFFFCC;">
<a href="<?php echo addsess2url("admin.php",$session_id); ?>">Retour ‡ l'accueil de l'administration</a>
<br />
<h2 style="text-align:center">Validation des sites en attente</h2>
<br /><br />
<?php

// On vÈrifie s'il n'y pas des sites mis en attente pour les annuaires en auto_validate
$sql_verif_auto = "SELECT DISTINCT s.titre, s.url, s.url_image, s.id, c.id AS id_cat, c.cat_name FROM $T_sites s, $T_categories c WHERE s.id_cat = c.id AND (s.activation = 2 OR s.activation = 0) ORDER BY titre ASC";
$res_verfi_auto = send_sql($sql_verif_auto,"trouver les sites mis en attente suite ‡ une vÈrification");


if (!$auto_validate || mysql_num_rows($res_verfi_auto)) //si il faut bien valider les sites ou qu'il y a des sites mis en attente
{
//formulaire destine a l'administrateur avec lequel il pourra valider des sites

//affichage de tous les sites de la table site_en_attente
//creation des requetes
$sql1 = "SELECT s.*, c.cat_name FROM $T_sites_in_wait s, $T_categories c WHERE s.id_cat = c.id ORDER BY date_soumission ASC";
$sql2 = "SELECT DISTINCT s.titre, s.url, s.url_image, s.id, c.id AS id_cat, c.cat_name FROM $T_sites s, $T_categories c WHERE s.id_cat = c.id AND (s.activation = 2 OR s.activation = 0) ORDER BY titre ASC";
//connexion a la BD
//on est deja connecte
//envoi des requetes
$res1 = send_sql($sql1,"trouver les sites en attente de validation");
$res2 = send_sql($sql2,"trouver les sites mis en attente suite ‡ une vÈrification");
//fin de la connexion
mysql_close($lk);
?>
Vous pouvez visiter les sites en cliquant sur le titre.
<br />
Vous pouvez Ègalement modifier les infos d'un site en attente avant de le valider dans votre annuaire !
<?php
if (mysql_num_rows($res1))
//si on a trouve au moins un site en attente
{
?>
<br />
<center>
<form action="<?php echo addsess2url("validate_site.php",$session_id); ?>" method="post">
<input type="hidden" name="action" value="validate">
<table border="1" bordercolor="#000000" cellspacing="0" cellpadding="4">
<tr>
<td align="center" width=450><strong>Site soumis par les visiteurs</strong></td>
<td align="center"><strong>Date de soumission</strong></td>
<td align="center"><strong>Valider</strong></td>
<td align="center"><strong>Refuser</strong></td>
<td align="center"><strong>Attendre</strong></td>
</tr>
<?php
$i=0;
while ($a_site = mysql_fetch_array($res1,MYSQL_ASSOC))
{
?>
<tr>
<td align="left" width=450>
<a href="<?php echo $a_site["url"]; ?>" target="_blank" value=1><?php echo htmlspecialchars($a_site["titre"]); ?></a> :
[<a href="<?php echo addsess2url("modify_site.php?action=show_site_in_wait_prop&id_cat=$a_site[id_cat]&url=$a_site[url]",$session_id); ?>">Modifier</a>]
<br />
ProposÈ dans <a href="<?php echo addsess2url("admin_annuaire.php?cat_id=$a_site[id_cat]",$session_id); ?>"><?php echo htmlspecialchars($a_site["cat_name"]); ?></a>
<br />
<?php echo htmlspecialchars($a_site["description"]); ?><br />
<?php
if ( $a_site["url_image"] )
echo "<br /><a href=\"$a_site[url]\" target=\"_blank\"><img src=\"$a_site[url_image]\" width=\"120\" height=\"90\" border=\"0\"></a>";
else
echo "<br /><a href=\"$a_site[url]\" target=\"_blank\"><img src=\"../img/image_sites.gif\" width=\"120\" height=\"90\" border=\"0\"></a>";
?>
</td>
<td align="center">
<?php echo $a_site["date_soumission"]; ?>
</td>
<td align="center">
<input type="hidden" name="url2validate[<?php echo $i; ?>]" value="<?php echo $a_site["url"]; ?>" />
<input type="hidden" name="id_cat_url2validate[<?php echo $i; ?>]" value="<?php echo $a_site["id_cat"]; ?>" />
<input type="radio" name="site2validate[<?php echo $i; ?>]" value="1" />
<br />
</td>
<td align="center">
<input type="radio" name="site2validate[<?php echo $i; ?>]" value="-1" />
<br />
</td>
<td align="center">
<input type="radio" name="site2validate[<?php echo $i; ?>]" value="0" checked />
<br />
</td>
</tr>
<?php
$i++;
}
?>
</table>
<br /><br />
<center><input type="submit" value="Valider les sites sÈlectionnÈes" onClick="this.value='Validation en cours...';" /></center>
</form>
</center>
<br /><br />
<hr>
<?php
}
if (mysql_num_rows($res2))
//si on a trouve au moins un site mis en attente
{
?>
<br /><br />
<center>
<form action="<?php echo addsess2url("validate_site.php",$session_id); ?>" method="post">
<input type="hidden" name="action" value="revalidate" />
<table border=1 bordercolor="#000000" cellspacing="0" cellpadding="4">
<tr>
<td align="center" width="450"><strong>Site mis en attente suite ‡ une vÈrification</strong></td>
<td align="center"><strong>RÈactiver</strong></td>
<td align="center"><strong>Supprimer</strong></td>
<td align="center"><strong>Attendre</strong></td>
</tr>
<?php
$i=0;
while ($a_site = mysql_fetch_array($res2,MYSQL_ASSOC))
{
?>
<tr>
<td>
<a href="<?php echo $a_site["url"]; ?>" target="_blank"><?php echo htmlspecialchars($a_site["titre"]); ?></a> :
[<a href="<?php echo addsess2url("modify_site.php?action=show_dead_site_prop&id_site2modify=$a_site[id]",$session_id); ?>">Modifier</a>]
<br />
PrÈsent dans <a href="<?php echo addsess2url("admin_annuaire.php?id_cat=$a_site[id_cat]",$session_id); ?>"><?php echo htmlspecialchars($a_site["cat_name"]); ?></a>
<br />
<a href="<?php echo $a_site["url"]; ?>" target="_blank"><?php echo $a_site["url"]; ?></a><br />
<?
if ( $a_site["url_image"] )
echo "<br /><a href=\"$a_site[url]\" target=\"_blank\"><img src=\"$a_site[url_image]\" width=\"120\" height=\"90\" border=\"0\"></a>";
else
echo "<br /><a href=\"$a_site[url]\" target=\"_blank\"><img src=\"../img/image_sites.gif\" width=\"120\" height=\"90\" border=\"0\"></a>";
?>
</td>
<td align="center">
<input type="hidden" name="url2revalidate[<?php echo $i; ?>]" value="<?php echo $a_site["url"]; ?>" />
<input type="radio" name="site2revalidate[<?php echo $i; ?>]" value="1" />
<br />
</td>
<td align="center">
<input type="radio" name="site2revalidate[<?php echo $i; ?>]" value="-1" />
<br />
</td>
<td align="center">
<input type="radio" name="site2revalidate[<?php echo $i; ?>]" value="0" checked />
<br />
</td>
</tr>
<?php
$i++;
}
?>
</table>
<br /><br />
<center><input type="submit" value="Valider les sites sÈlectionnÈes" onClick="this.value='Validation en cours...';" /></center>
</form>
</center>
<br /><br /><br />
<?php
}
if(!mysql_num_rows($res1) && !mysql_num_rows($res2))
{
?>
<br /><br />
<strong>
Aucun site en attente de validation
</strong>
<br /><br />
<?php
}
} //fin du if (!auto_validate)
else //auto_validate = 1 ==> ajout automatique
{
?>
Il n'y a aucun site ‡ valider vu que vous avez parametrÈ l'annuaire pour que les sites soient automatiquement acceptÈs !
<br />
Si vous voulez de nouveau avoir le contrÙle sur la validation des sites, il faut aller <a href="<?php echo addsess2url("param_annuaire.php",$session_id); ?>">modifier les paramËtres</a> de votre annuaire...
<?php
}

include('footer_admin.php');
?>
</body>
</html>
A voir également:

3 réponses

debutant? à quel point?

Je suis aussi debutant en php, encore plus en php+ mysql... hier je chercher la méme chose que toi, avec en plus l'ajout d'un champ "url lien de retour", puis d'un moyen de verification auto du lien de retour, j'ai travaillé 4h dessu, resultat: tout fonctionne, j'ai apris beaucoup de chose en tr"s peu de temps ;)

Je peux deja te dire que ta funct_mail est mal placé, de plus tu as mis "{}" sans apeller ta fonction...
ta declaration de variable "$sqlc" n'est pas bonne non plus... ça sent teriblement le copier-coller, sans aucune recherche...
Moi je veux bien te filer un bout de code, mais tu ne vas rien apprendre, et rester a ton niveau coté php... et je ne pense pas que ce soit ton but...n'est pas?
0
Bonjour,

Merci de répondre, comme tu dit c'est du copié collé, quand je dit débutant, c'est vraiment débutant , et en ce moment j'ai vraiment pas le temps de me pencher trop sur la question, si tu veut bien me donner ton morceau de code, ce serait sympa, c'est vrai que je pourrais me pencher dessus, mais vu mon niveau, il me faudra beaucoup plus que 4 heures, et en ce moment j'ai trop de boulot.

Merci de ton aide.
0
Ba mince tu ne suis tes sujets ou tu poste? j'ai posté le bout de code la bas moi :/

Je le remet ici pour les autres ;)

j'avais un bug avec la variable de l'email_master, du coup je l'ai declaré manuellement. il faut donc mettre ton adresse mail dans cette variable :
$emailm = "ton_mail_ici";


la modif complete:

		for ($i=0;$i<$nb_site2del;$i++)
		{
				if($func_mail)
				//si on sait envoyer des mails
				{ 
                    $sqlc = "SELECT * FROM $T_sites_in_wait WHERE url = '$url_site2del[$i]' AND id_cat = '$id_cat_site2del[$i]' ";
					$resc = send_sql($sqlc,"envoi mail");
					$resultatd = mysql_fetch_array($resc,MYSQL_ASSOC);
					$emailm = "ton_mail_ici";
					//preparation du message
					$message = "Votre site $url_site2del[$i] vient d'être refusé de l'annuaire \n";
					$message .= "Resoumettez votre site après avoir fait un lien vers notre annuaire\n";
					//envoi du mail
					send_mail($resultatd['email_proprio'],"Votre site est refusé",htmlspecialchars($message),$emailm);
					echo "envoie de mail: <br />";
                                                                                echo $resultatd['email_proprio'];
                                                                                echo "<br />;
				} //fin if func_mail
			$sql = "DELETE FROM $T_sites_in_wait WHERE url = '$url_site2del[$i]' AND id_cat = '$id_cat_site2del[$i]' ";
			$del = send_sql($sql,"supprimer le site $url_site2del dans la table des sites en attentes (admin)");
			echo "Le site \"".htmlspecialchars($url_site2del[$i])."\" a été refusé !\n<br />\n";
		}
	}//fin du if (nb_site2add + nb_site2del)


Voici un lien vers mon annuaire modifié: http://www.angeliquefeerie.fr/annuaire/
Je tiens à preciser que je suis aussi debutant...
0