Salut,
Je pense que le meilleur moyen pour toi, n'est pas de bloque l'actualisation, ce qui est impossible, mais plutot de conserver la date de dernière affichage et si la difference entre la date de dernier affichage et la date de la nouvelle demande est de moins de 30 secondes tu gère ca. Tu peux soit afficher de nouveau la même pub soit lui enlevé des crédits.
function credit_view_banner() {
$visoban=0; $busrand = array();
$query = mysql_query("SELECT ID FROM adv_ban WHERE status='active'");
while ($skaiciuojami = mysql_fetch_array($query)) {$visoban++; $busrand[$visoban]=$skaiciuojami['ID'];}
if ($visoban) {
$kents = rand(1,$visoban);
$query = mysql_query("SELECT ban_url, ban_target, ad_bought, ad_rec FROM adv_ban WHERE ID='$busrand[$kents]'");
if ($baneris = mysql_fetch_array($query)) {
echo "<a target=_blank href=scripts/ban.php?id=$busrand[$kents]><img src=$baneris[ban_url] style='border-width: 0' width=468 height=60></a>";
$viewai=$baneris['ad_rec']+1;
$query = mysql_query("UPDATE adv_ban set ad_rec='$viewai' WHERE ID='$busrand[$kents]'");
$query = mysql_query("UPDATE aff_ausers set bar_pts = bar_pts + 0.01 , ptexact = ptexact + 0.01 WHERE login='{$_SESSION['slogin']}'");
}
}
}
et cette fonction je l'apelle dans ma page visionneuse_start.php voila le code dans ma page visionneuse
<?
include 'scripts/include/indexstart.php';
?>
<?$mem_login = member_login();?>
<?php $delai=30; header("Refresh: $delai;"); ?>
<HTML>
<HEAD>
<meta http-equiv="Content-Language" content="en-us">
<TITLE>SurfBarre - <?=$sys['companyn']?></TITLE>
</HEAD>
<BODY LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0 location=0 >
<?=credit_view_banner()?>
<br />
Points de la Visionneuse <?
setlocale(LC_TIME, 'french');
echo 'pour le mois de '.strftime('%B %Y', time());
?> : <?=round(fnumb($mem_login['bar_pts']), 2)?> Pts.
</BODY>
</HTML>
la facon pour enlever des points serrai bien commen puis-je faire tout cela merci
Tu pourrai remplacer le refresh par un redirect et ainsi passer un paramètre. tu peux également utiliser des variables de session pour mémoriser l'action précédente de l'utilisateur (date d'appel du script, pub en cours...)
oui je sais,Sauf qu'il suffit de regarder le code source généré.
Prendre l'url de l'iframe et l'ouvrir dans une autre fenêtre.
Et rafraichir ou l'afficher autant qu'on le souhaite.
merci jai lu pour les sessions ca me paret tres bien allors voila ce que jai fais pour le moment mais ca marche pas, avant que j'ajoute la fonction $_SESSION['visioon'] et visioout les points s'ajoutais au compte mais las, seulement la banniere saffiche et ne compte pas les points a donnerVoilà un article sur l'utilisation des sessions : http://phpdebutant.org/article69.php
function credit_view_banner() {
global $sys, $timestamp; $visoban=0; $busrand = array();
$query = mysql_query("SELECT ID FROM adv_ban WHERE status='active'");
while ($skaiciuojami = mysql_fetch_array($query)) {$visoban++; $busrand[$visoban]=$skaiciuojami['ID'];}
if ($visoban) {
$kents = rand(1,$visoban);
$query = mysql_query("SELECT ban_url, ban_target, ad_bought, ad_rec FROM adv_ban WHERE ID='$busrand[$kents]'");
if ($baneris = mysql_fetch_array($query)) {
echo "<a target=_blank href=scripts/ban.php?id=$busrand[$kents]><img src=$baneris[ban_url] style='border-width: 0' width=468 height=60></a>";
$viewai=$baneris['ad_rec']+1;
$query = mysql_query("UPDATE adv_ban set ad_rec='$viewai' WHERE ID='$busrand[$kents]'");
}
// verification du temps passer sur la page si out est plus petit que in
if ($_SESSION['visioout'] < $_SESSION['visioin']){
// si ok temp passer on envoi les pts sur le membre et parrain et ajoute les stats de la barre
$query = mysql_query("UPDATE aff_ausers set bar_pts = bar_pts + 0.01 , ptexact = ptexact + 0.01 WHERE login='{$_SESSION['slogin']}'");
$query = mysql_query("UPDATE stat_overall set bar_tpts = bar_tpts + 0.01 , bar_mois = bar_mois + 0.01 , bar_tirage = bar_tirage + (0.01 * 0.20)");
}
}
//on regarde si le visioneur a un parrain si oui on ajoute les points au parrain
$query = mysql_query("SELECT referrer, ptref, ptexact FROM aff_ausers WHERE login='{$_SESSION['slogin']}'");
if ($member = mysql_fetch_array($query)){
$ptref = $member['ptref'] + 0.01; $ptref = $member['ptref'] + 0.01; $darasoms = $member['referrer'];
for ($i=1; $i<=$sys['reflvl']; $i++) {
$query = mysql_query("SELECT referrer, ptref, ptexact FROM aff_ausers WHERE login='".$darasoms."'");
if ($uplainas = mysql_fetch_array($query)){
$ptref = $uplainas['ptref'] + (0.01 * $sys['refupr'][$i]);
$ptexact =$uplainas['ptexact'] + (0.01 * $sys['refupr'][$i]);
mysql_query("UPDATE aff_ausers SET ptref='".$ptref."', ptexact='".$ptexact."' WHERE login='".$darasoms."'");
$darasoms = $uplainas['referrer'];
}
}
}
}
Et dans ma page de visiobarre jai mis:<?
$_SESSION["visioon"] = time();
$_SESSION["visioout"] = time() + 10;
?>
<?
include 'scripts/include/indexstart.php';
?>
<?$mem_login = member_login();?>
<HTML>
<HEAD>
<meta http-equiv="Content-Language" content="en-us">
<TITLE>SurfBarre - <?=$sys['companyn']?></TITLE>
</HEAD>
----------= le reste de la page =---------
Allors quelqu'un pour mindiquer pourquoi que ma fonction ne fonctionne plus
merci, mais petit probleme de calcule.Attention aux short_open_tag ! Si ce n'est pas activé sur le serveur ce sera pour lui du code HTML et non PHP...
Donc par précaution mieux vaux toujours utiliser <?php au lieu de <?
Ensuite pour les sessions cela vient du fait que tu as oublié le session_start()
if( time() > $_SESSION['visioout'] ){
// si j'ai bien compris ton système là on a le droit d'incrémenter car le temps est écoulé
}