Pagina 1 di 2

POP-UP con quary

Inviato: 14/08/2010, 20:30
da Astro86
Allora..

io ho creato questo POP-UP

Codice: Seleziona tutto

<body onload="javascript:popup('http://makerland.altervista.org/importante.php')">
<script type="text/javascript">
<!--
function popup(url){
day = new Date();
id = day.getTime();
eval ("page" + id + " = window.open(url,'" + id + "', ' toolbar=no, scrollbars=no, location=no, statusbar=no, menubar=no, resizable=no, width=300, height=350, left=50, top=50');");
}
-->
</script>
per avvertire l'utenza di un avviso importante..

funziona tutto come dovrebbe, ma vorrei che si visualizzasse solo una volta sola per ogni accesso al sorum..

quindi avevo pensato ad una quary... ma come faccio?

qualche suggerimento?

Re: POP-UP con quary

Inviato: 14/08/2010, 21:18
da Micogian
La variabile $user->data che è disponibile in index.php contiene numerosi dati che possono tornare utili.
Nel tuo caso io penserei di utilizzare la data di ultima visita che è memorizzata sotto forma di timestamp, ad esempio ci sarebbe la variabile "user_lastvisit" oppure la "session_last_visit" ma dovrebbero avere lo stesso dato.
In pratica si tratta di fissare un orario, secondo me potrebbe essere le ore 00 della giornata corrente.
Quando hai il timestamp delle ore 00.00 di oggi e il timestamp dell'ultima visita dell'utente puoi rendere visibile il popup solo se il timestamp dell'ultima visita è inferiore al timestamp delle ore 00. In pratica il popup si visualizza solo se l'utente non si è mai collegato in giornata.

Basta un semplice script in index.php, abilitare la variabile che fornisca i due timestamp (è disponibile la data di ultima visita con la variabile {'LAST_VISIT_YOU'} ma quella è la data.
In pratica, la procedura potrebbe essere questa:

1) creare nel file index.php lo script che crea il timestamp delle ore 00.

Codice: Seleziona tutto

// crea il timestamp delle ore 00 della data corrente
$gg = date(d) ; // giorno corrente
$mm = date(m) ; // mese corrente
$aa = date(Y) ; // anno corrente
$data_ini = mktime(0,0,0,$mm,$gg,$aa) ;  // timestamp alle ore 00 della data corrente

// aggiunge le variabili al template
$template->assign_vars(array(
   'TIME_INI'           => $data_ini,
   'TIME_LASTVISIT'  => $user->data['user_lastvisit']  
   ));
A questo punto nel template si mette una condizione IF

Codice: Seleziona tutto

<!-- IF TIME_INI > TIME_LASTVISIT --> codice del popup <!-- ENDIF -->

Re: POP-UP con quary

Inviato: 14/08/2010, 21:34
da Astro86
Ora provo

Mi da errore su questa riga

Codice: Seleziona tutto

   'TIME_LASTVISIT'  => $user->data['user_lastvisit']; 

Re: POP-UP con quary

Inviato: 14/08/2010, 21:51
da Micogian
Togli il punto e virgola

Re: POP-UP con quary

Inviato: 15/08/2010, 10:50
da Astro86
No.. cosi e come se non avessi fatto niente...
ho un idea...(più semplice)
imposto i cookie in modo che ogni volta che esci dal sito ti devi ri-loggiare e metto la script tra i tag (non mi ricordo quali sono XD) per far vedere solo ai non registrati..

cosi quando si loggiano il POP-UP non dovrebbe partire..

o no?

Re: POP-UP con quary

Inviato: 15/08/2010, 12:14
da Micogian
Astro86 ha scritto:No.. cosi e come se non avessi fatto niente...
Strano, il punto e virgola era un errore, dovrebbe funzionare, salvo il problema che per "user_lastvisit" non si intenda il momento stesso che ti colleghi, ma non credo perchè quando ti logghi c'è il messaggio "L'ultima tua visita è ,,,,"
A meno che il timestamp da selezionare sia "session_lastvisit"
ho un idea...(più semplice)
imposto i cookie in modo che ogni volta che esci dal sito ti devi ri-loggiare e metto la script tra i tag (non mi ricordo quali sono XD) per far vedere solo ai non registrati..

cosi quando si loggiano il POP-UP non dovrebbe partire..

o no?
Riloggare gli utenti è una rottura, sono convinto che il mio sistema funziona, si tratta di capire bene che valori fornisce.

Se vuoi fare una prova crea un file php con questo contenuto:

Codice: Seleziona tutto

<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);

$user->setup('viewtopic');

$gg = date(d) ; // giorno corrente
$mm = date(m) ; // mese corrente
$aa = date(Y) ; // anno corrente
$data_ini = mktime(0,0,0,$mm,$gg,$aa) ;  // timestamp alle ore 00 della data corrente

echo "Timestamp corrente= " . time() . "<br>";
echo "Timestamp ore 00 = " . $data_ini . "<br>";
echo "Ultima visita = " . $user->data['session_last_visit'] . "<br><br>" ;

// visualizza i valori dell'array $user->data
    $n = '1' ;
    foreach($user->data As $key => $valore){
    echo $n . " - " . $key . " = " . $valore . "<br>";
    ++$n ;
    }
?>
Lo puoi chiamare "prova_user.php" e lo metti nella root del Forum.
Se lo richiami con l'url http://tuo_sito/forum/prova_user.php ti fornisce:
- la data corrente
- la data delle ore 00
- la data dell'ultima visita
- tutte le variabili associate all'array $user->data che sono presenti in ogni pagina.

Re: POP-UP con quary

Inviato: 15/08/2010, 16:30
da Astro86
ora provo
edit:
mi da questo

Codice: Seleziona tutto

Timestamp corrente= 1281882725
Timestamp ore 00 = 1281823200
Ultima visita = 1281789032
che non credo siano ne date e ne ore

Re: POP-UP con quary

Inviato: 15/08/2010, 17:33
da Astro86
o creato un alternativa più o meno valida...

Codice: Seleziona tutto

<script language="Javascript">
<!--

once("window.open('http://makerland.altervista.org/importante.html', '', 'width=300,height=260,scrollbars=auto')","Prova", "1 ore");
window.opener=self

function once(command,id,interval){
	var mul = interval.substring(0,interval.indexOf(" "));
	mul = parseInt(mul);
	interval = interval.substring(interval.lastIndexOf(" ")+1,interval.length);
	if (interval == "secondi"){ e = 1000; }
	else if (interval == "minuti"){ e = 60000; }
	else if(interval == "ore"){ e = 3600000; }
	else if (interval == "giorni"){ e = 86400000; }
	e = e * mul;
	var now = new Date();
	var ex = new Date();
	ex.setTime(now.getTime() + e);
	if (!getCookie(id)){
		eval(command);
		setCookie(id,"1",ex);
	}
}
function setCookie(name, value, expire){
	document.cookie = name + "=" + escape(value) + ((expire ==null) ? "" : ("; expires=" + expire.toGMTString()));
}
function getCookie(Name){
	var search = Name + "=";
	if (document.cookie.length > 0){
		offset = document.cookie.indexOf(search);
		if (offset != -1){
			offset += search.length;
			end = document.cookie.indexOf(";", offset);
			if (end == -1) {
				end = document.cookie.length;
			}
			return unescape(document.cookie.substring(offset, end));
		} else {
			return "";
		}
	} else {
		return "";
	}
}
-->

</script>
inpratica puoi impostare Secondi, Minuti, ore, giorni.
in base a come lo imposti il POP-UP parte una volta ogni 1 ora...

non è esattamente come volevo fare ma si si potesse integrare questa script con il metodo tuo credo che si può avere grossi risultati :)

Re: POP-UP con quary

Inviato: 15/08/2010, 17:40
da Micogian
Dai un'occhiata a cos'è un timestamp, cerca su Google.
Vedrai che il timestamp è quel numero che hai ottenuto con la mia Mod.
Il time stamp è il numero dei secondi dalla data iniziale che dovrebbe essere 1.1.1970.
Ogni giorno abbiamo un incremento di (60 * 60 * 24) = 86400
Un giorno corrisponde a un incremento del timestamp di 86400
Se guardi bene la mia Mod è perfetta, dovrebbe visualizzare il Popup solo se il timestamp dell'ultima visita è inferiore a quello delle ore 00.

Re: POP-UP con quary

Inviato: 15/08/2010, 17:53
da Astro86
mi sono accorto che mi ero sbaiato a mettere

Codice: Seleziona tutto

<!-- IF TIME_INI > TIME_LASTVISIT --> 

<!-- ENDIF -->
avevo cancellato una parte...

ma ora a me si visualizza ogni volta che aggiorno o vado nell'indice