[Php] script per il conteggio delle mail inviate

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
per vedere il formato del campo data prima aggiungi nel form
PHP:
<?php
//.......
require_once "connessione.php"; 
$dati=mysql_fetch_array(mysql_query("SELECT *FROM inviate")); 
$id=$dati['id']; 
$data=$dati['data'];
var_dump($dati['data']);//poi dopo da togliere
$quante=$dati['numero'];
//.....ecc
?>
provi ad usare lo script di invio e guardi è posti cosa ti restituisce il var_dump
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
ciao
per vedere il formato del campo data prima aggiungi nel form
PHP:
<?php
//.......
require_once "connessione.php"; 
$dati=mysql_fetch_array(mysql_query("SELECT *FROM inviate")); 
$id=$dati['id']; 
$data=$dati['data'];
var_dump($dati['data']);//poi dopo da togliere
$quante=$dati['numero'];
//.....ecc
?>
provi ad usare lo script di invio e guardi è posti cosa ti restituisce il var_dump

Il valore è NULL

Anche perchè lo script postato prima non va, non mi crea le tabelle nel db e mi esce un errore:

PHP:
Parse error: syntax error, unexpected T_STRING in /******/crea_tabella.php on line 9

Prova tu stesso a dare un occhio magari sbaglio qualcosa

form
http://ryunion.herobo.com/invio/form.php
tabella
http://ryunion.herobo.com/invio/crea_tabella.php
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
ciao
per forza
se non crea la tabella.


non riesco a vederlo (del resto ho fatto il copy/paste da mysqladmin)
riprovo e ti so dire

Ho notato una cosa, se dal codice che mi hai dato cancello
PHP:
or die mysql_error();

Lo script non mi da più l'errore com'è ovvio che sia, ma se vado a controllare mi ha creato la tabella 'inviate' , tuttavia non crea id data e numero :S
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
l'ho provata correggi in e aggiungi per riempirela la prima volta
PHP:
<?php
require_once "connessione.php";
mysql_query("
CREATE TABLE IF NOT EXISTS `inviate` (
`id` INT( 6 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`data` DATETIME NOT NULL ,
`numero` INT( 6 ) NOT NULL DEFAULT '0'
) ENGINE = MYISAM ;")
$data_iniziale=date("Y-m-d H:i:s");
mysql_query("INSERT INTO inviate(data, numero) VALUES('$data_iniziale', 0)");
?>
anche se non capisco il perchè dava errore.

poi nella parte che uppa modifica
PHP:
$oggi=date("d m Y");
in
PHP:
$oggi=date("Y-m-d H:i:s");

in questo modo i formati sono uguali
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Nulla, modifiche fatte alla pagina invio.php

Ricreata la tabella con il codice da te postato, mi riporta questo errore

PHP:
Parse error: syntax error, unexpected T_VARIABLE in /****/crea_tabella.php on line 9

Alla riga 9 c'è

PHP:
$data_iniziale=date("Y-m-d H:i:s");

Ho provato anche a cancellare e ricreare il db.... ma nulla :S

Non faccio prima a crearle a mano nel pannello che ti mostro nell'allegato?
 

Allegati

  • Immagine.png
    Immagine.png
    71,6 KB · Visite: 261
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
viva gli orbi, c'ho girato come una trottola e non riuscivo a vederlo

) ENGINE = MYISAM ;")

deve essere

PHP:
<?php
require_once "connessione.php";
mysql_query("
CREATE TABLE IF NOT EXISTS `inviate` (
`id` INT( 6 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`data` DATETIME NOT NULL ,
`numero` INT( 6 ) NOT NULL DEFAULT '0'
) ENGINE = MYISAM ");//per un punto e virgola martin perse la cappa :(
$data_iniziale=date("Y-m-d H:i:s");
mysql_query("INSERT INTO inviate(data, numero) VALUES('$data_iniziale', 0)");
?>

comunque puoi farla anche manualmente
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
ciao
viva gli orbi, c'ho girato come una trottola e non riuscivo a vederlo

) ENGINE = MYISAM ;")

deve essere

PHP:
<?php
require_once "connessione.php";
mysql_query("
CREATE TABLE IF NOT EXISTS `inviate` (
`id` INT( 6 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`data` DATETIME NOT NULL ,
`numero` INT( 6 ) NOT NULL DEFAULT '0'
) ENGINE = MYISAM ");//per un punto e virgola martin perse la cappa :(
$data_iniziale=date("Y-m-d H:i:s");
mysql_query("INSERT INTO inviate(data, numero) VALUES('$data_iniziale', 0)");
?>

comunque puoi farla anche manualmente

ALEEEEEEEEEE ALE' ALE' ALE' borgoooooooooo borgoooooooooooooo xD

Perfetto la tabella è stata creata e riempita, e c'è da dire che anche io (nella mia ignoranza) avevo provato a controllare eventuali errori di sintassi, poichè googlando con "Parse error: syntax error, unexpected T_VARIABLE" portava nella ricerca tutte persone che avevano risolto questo problema seplicemente controllando la grammatica del codice, infatti tutti si erano dimenticati una virgola oppure uno spazio o era una dicitura sbagliata :)

Il valore da NULL (ora che la tabella è piena) è diventato string(19) "2012-06-14 11:13:34"
Come minimo nel codice tra i commenti metto i credits a te xD
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
ehm... ho cantato vittoria troppo presto.... :incazz2:
Le tabelle sono state create, ma il limite non viene rispettato.

Ho provato a settarlo a 10, ma non lo rispetta......

Il codice è diventato così

form.php ho cambiato così due parametri
PHP:
    $mumero_massimo=10; 
$oggi=date("Y-m-d H:i:s");//!!!verifica che sia nello stesso formato di quello che hai nel db

PHP:
<?php 
session_start(); 
if(!isset($_SESSION['p']) || $_SESSION['p'] != $_POST['accesso']){//ricorda i cookie possono essere cancellati dall'utente 
    //la sessione non esiste o è diversa da valore del campo nascosto: ho tentato un accesso diretto a invio.php 
    header('Location: ops.php'); 
    exit; 
}else{ 
    //provengo dal form quindi posso fare le verifiche del numero per upparlo 
    //la cosa è possibile solo se il numero di oggi è minore dell'ammesso 
    //elimino la sessione che non serve più 
    unset($_SESSION['p']); 
    require_once "connessione.php"; 
    $mumero_massimo=10; 
    $dati=mysql_fetch_array(mysql_query("SELECT *FROM inviate"));//non metto il controllo per la prima volta di utilizzo 
    $id=$dati['id']; 
    $data=$dati['data']; 
    $quante=$dati['numero']; 
	$oggi=date("Y-m-d H:i:s");  
    if($oggi == $data){ 
        //aggiorno il numero di email inviate oggi 
        $up=mysql_query("UPDATE inviate SET numero=numero+1 WHERE id=$id"); 
    }else{ 
        $up=mysql_query("UPDATE inviate SET data= '$oggi', numero=0  WHERE id=$id"); 
    } 
    /* *************************** 
    qui dovresti mettere i controlli lato server dei dati inviati 
    qui metti tutto il tuo ambaradan di lettura dei dati e l'invio 
    **************************** */ 
if ($_POST['Submit'] == 'Invia')
{

// Recupero il valore dei campi del form
 
$fromname = $_POST['nomedichiinvia'];
$fromemail = $_POST['maildichiinvia'];
$destinatario = "[email protected]"; 
$oggetto = $_POST['oggetto']; 
$messaggio = $_POST['messaggio']; 
$verif_box = $_POST["verif_box"];

// Valorizzo le variabili relative all'allegato 
$allegato = $_FILES['allegato']['tmp_name']; 
$allegato_type = $_FILES['allegato']['type']; 
$allegato_name = $_FILES['allegato']['name']; 

// Creo la variabile headers che mi darà la fake mail recuperando i valori fromname e fromemail.. creo la variabile msg che si andrà a riempire successivamente
$lt= '<';
$gt= '>';
$sp= ' ';
$from= 'From:';
$headers = $from.$fromname.$sp.$lt.$fromemail.$gt;
$msg = ""; 

// Verifico se il file è stato caricato correttamente via HTTP 
// In caso affermativo proseguo nel lavoro... 
if (is_uploaded_file($allegato)) 
{ 
  // Apro e leggo il file allegato 
  $file = fopen($allegato,'rb'); 
  $data = fread($file, filesize($allegato)); 
  fclose($file); 

  // Adatto il file al formato MIME base64 usando base64_encode 
  $data = chunk_split(base64_encode($data)); 

  // Genero il "separatore" 
  // Serve per dividere, appunto, le varie parti del messaggio. 
  // Nel nostro caso separerà la parte testuale dall'allegato 
  $semi_rand = md5(time()); 
  $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 
   
  // Aggiungo le intestazioni necessarie per l'allegato 
  $headers .= "\nMIME-Version: 1.0\n"; 
  $headers .= "Content-Type: multipart/mixed;\n"; 
  $headers .= " boundary=\"{$mime_boundary}\""; 

  // Definisco il tipo di messaggio (MIME/multi-part) 
  $msg .= "This is a multi-part message in MIME format.\n\n"; 

  // Metto il separatore 
  $msg .= "--{$mime_boundary}\n"; 

  // Questa è la parte "testuale" del messaggio 
  $msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n"; 
  $msg .= "Content-Transfer-Encoding: 7bit\n\n"; 
  $msg .= $messaggio . "\n\n"; 

  // Metto il separatore 
  $msg .= "--{$mime_boundary}\n"; 

  // Aggiungo l'allegato al messaggio 
  $msg .= "Content-Disposition: attachment;\n"; 
  $msg .= " filename=\"{$allegato_name}\"\n"; 
  $msg .= "Content-Transfer-Encoding: base64\n\n"; 
  $msg .= $data . "\n\n"; 

  // chiudo con il separatore 
  $msg .= "--{$mime_boundary}--\n"; 
} 
else 
{ 
  $msg = $messaggio; 
} 	


// controllo se il codice di verifica è corretto
if(md5($verif_box).'a4xn' == $_COOKIE['tntcon']){
	// se il codice di verifica è corretto invio il messaggio
	mail($destinatario, $oggetto, $msg, $headers);
	// cancello il cookie in modo che non può essere inviato nuovamente aggiornando la pagina
	setcookie('tntcon','');
} else if(isset($message) and $message!=""){
	// se il codice di verifica non è corretto o provano ad accedere direttamente alla pagina php mostro l'errore.
} else {

	echo '<html><center>OooopS!</center><br><a href="javascript:history.go(-1)">Torna indietro</a></html>';
	
	exit;
	}

} 
	
	
}//fine if else : provengo da form.php 
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>E-Mail inviata</title>
<style type="text/css">
<!--
body,td,th {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 12px;
}
-->
</style></head>

<body>
<table width="100%" height="100%">
<tr>
<td align="center" valign="middle">

Email inviata. Grazie.<br />
<br />
<a href="javascript:history.go(-1)">Torna indietro</a>

</td>
</tr>
</table>
</body>
</html>

invio.php qui così rispettando il form.php (quindi 10 a tutti e due)
PHP:
$numero_massimo=10;//che puoi modificare

PHP:
<?php 
session_start();//attento deve essere la prima istruzione anche prima di require o include 
//ti aggiungo questa parte più sicura dei cookie per imperdire l'accesso a invia.php 
$_SESSION['p'] = sha1(uniqid(mt_rand()));//genero e codifico un numero casuale 
//come vedrai ti aggiungo un campo hidden per trasmettere e confrontare il numero generato 
/* 
qui la parte per la verifica del numero di email inviate 
è inutile mostrare il pulsante di submit se l'email non può essere inviata, o meglio 
NON mostrare l'intero form, dai un avviso e riinvii alla pg che vuoi 
*/ 
$numero_massimo=10;//che puoi modificare 
$oggi=date("Y-m-d");//!!!verifica che sia nello stesso formato di quello che hai nel db 
require_once "connessione.php"; 
$dati=mysql_fetch_array(mysql_query("SELECT *FROM inviate")); 
$id=$dati['id']; 
$data=$dati['data']; 
$quante=$dati['numero']; 
//verifico quante email sono state inviate oggi 
if($oggi == $data && $quante >= $numero_massimo){ 
    //oggi ho raggiunto il numero massimo di email quindi non posso inviare 
    //avviso e ritorno in automatico alla pag che mi pare 
    echo "<h1>oggi $oggi sono state gia inviate $quante email, non è possibile inviarne altre</h1>"; 
    //quindi dopo 4 sec riinvio (uso il tag meta e non header refresh per non aggiungere altre istruzioni) 
    echo "<meta http-equiv='Refresh' content='4; URL=ops.php'>"; 
    exit; 
}else{ 
//non ho raggiunto il numero massimo quindi posso inviare 
?> 
<html>  
<head>  
<title></title> 
<META HTTP-EQUIV="Imagetoolbar" Content="no"> 
<link rel="stylesheet" type="text/css" href="stile.css"> 
<script language="javascript">

//funzione per disabilitare il tasto destro del mouse
var message=""; 

function clickIE() {

if (document.all) {
(message); 
return false
}

} 

function clickNS(e) {

if (document.layers||(document.getElementById&&!document.all)) {
if (e.which==2||e.which==3) {(message); return false}}} 
if (document.layers) {document.captureEvents(Event.MOUSEDOWN); document.onmousedown=clickNS} 
else {
document.onmouseup=clickNS; document.oncontextmenu=clickIE
} 

document.oncontextmenu=new Function("return false")

// funzione per accettare solo numeri nel box del campo verifica

function reloadCaptcha() 
{
	document.getElementById("image").src=document.getElementById("image").src;
}

function keyCheck(eventObj, obj)
{
var keyCode

// Check For Browser Type
if (document.all){
keyCode=eventObj.keyCode
}
else{
keyCode=eventObj.which
}

var str=obj.value

if(keyCode==46){
if (str.indexOf(".")>0){
return false
}
}

if((keyCode<48 || keyCode >58) && (keyCode != 46)){ // Allow only integers and decimal points
return false
}

return true
}

//funzione di validazione delle due mail, messaggio, nome e oggetto
function validate()
{
var str=true;
document.getElementById("msgnome").innerHTML="";
document.getElementById("msgemailinvia").innerHTML="";
document.getElementById("oggetto").innerHTML="";



if(document.modulo.nomedichiinvia.value=='')
{
document.getElementById("msgnome").innerHTML="&nbsp;<img src=\"./sign_warning.png\" align=\"absmiddle\">&nbsp;Inserire il nome.";
str=false;
}

var validate_char= /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
if(!document.modulo.maildichiinvia.value.match(validate_char))
{
document.getElementById("msgemailinvia").innerHTML="&nbsp;<img src=\"./sign_warning.png\" align=\"absmiddle\">&nbsp;Inserire un indirizzo email valido.";
str=false;
}

if(document.modulo.oggetto.value=='')
{
document.getElementById("oggetto").innerHTML="&nbsp;<img src=\"./sign_warning.png\" align=\"absmiddle\">&nbsp;Inserire l\'oggetto della mail.";
str=false;
}

if(document.modulo.messaggio.value=='')
{
document.getElementById("messaggio").innerHTML="&nbsp;<img src=\"./sign_warning.png\" align=\"absmiddle\">&nbsp;Inserire il messaggio.";
str=false;
}

return str;

}
</script>
</head>  
<body oncontextmenu="return false;" ondragstart="return false;" onselectstart="return false;"> 
<p>   
<form name="modulo" action="invio.php" method="post" enctype="multipart/form-data" onSubmit="return validate()" > 
<table border="0" align="center" >   
    <tr> 
      <td width="160"><div align="left"><b>Nome di chi invia&nbsp;:</b>&nbsp;&nbsp;&nbsp;<br></div></td> 
      <td width="100"><input size="44" type="text" name="nomedichiinvia" ></td> 
    </tr>  
    <tr> 
      <td width="160"><br></td> 
      <td width="100"><div></div><div id="msgnome" style="color:#FF0000"></div></td> 
    </tr>   
    <tr> 
      <td width="160"><div align="left"><b>Email di chi invia&nbsp;:</b>&nbsp;&nbsp;&nbsp;<br></div></td> 
      <td width="100"><input size="44" type="text" name="maildichiinvia" ></td> 
    </tr>  
    <tr> 
      <td width="160"><br></td> 
      <td width="100"><div id="msgemailinvia" style="color:#FF0000"></div></td> 
    </tr>      
    <tr> 
      <td width="160"><div align="left"><b>Oggetto&nbsp;:</b>&nbsp;&nbsp;&nbsp;<br></div></td> 
      <td width="100"><input size="44" type="text" name="oggetto" ></td> 
    </tr>  
    <tr> 
      <td width="160"><br></td> 
      <td width="100"><div id="oggetto" style="color:#FF0000"></div></td> 
    </tr>        
    <tr> 
      <td width="160"><div align="left"><b>Messaggio&nbsp;:</b>&nbsp;&nbsp;&nbsp;<br></div></td> 
      <td width="100"><textarea cols="20" rows="4" name="messaggio" style="width:293px;overflow:hidden;height:130px; max-width:300px;max-height:130px"></textarea></td> 
    </tr>  
    <tr> 
      <td width="160"><br></td> 
      <td width="100"><div id="messaggio" style="color:#FF0000"></div></td> 
    </tr>         
    <tr> 
      <td width="160"><div align="left"><b>Allega file&nbsp;:</b>&nbsp;&nbsp;&nbsp;<br></div></td> 
      <td width="100"><input type="file" name="allegato" size="32" class="file_1"/></td> 
    </tr> 
    <tr> 
      <td width="160"><br></td> 
      <td width="100"></td> 
    </tr>       
    <tr> 
        <td width="160"><div align="left"><b>Codice di verifica&nbsp;:</b>&nbsp;&nbsp;&nbsp;<br></div></td> 
          <td width="30"><input type="text" name="verif_box" id="verif_box" size="25" onKeyPress="return keyCheck(event, this)" />       
            <a onclick="javascript:reloadCaptcha()" style="cursor: pointer;"><img src="refresh.png" valign="middle" ></a>  
            <iframe align="left" valign="top" id="image" style="border:0;height:40px;width:60px" scrolling="no" src="verificationimage.php?<?php echo rand(0,9999);?>" ></iframe> 
        </td> 
    </tr>  
    <tr> 
      <td width="160"><br></td> 
      <td width="100"></div></td> 
    </tr>     
    <tr> 
      <!-- *********ecco qui il campo hidden ******--> 
      <td width="160"><input name="accesso" type="hidden" value="<?php echo $_SESSION['p'];?>"></td> 
      <td width="100"><center><input type="submit" name="Submit" value="Invia"><input type="reset" value="Reset"></center></td> 
    </tr> 
  </table> 
</td> 
</tr> 
</table> 
</form> 
</body>  
</html> 
<?php 
}//fine dell if else invio permesso o non permesso 
?>

La mia "paura" è che il controllo confligga con la verifica del captcha..... :dipser::dipser:
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
metti dei vardump e posta quello che riportano
nella pag invio.php
PHP:
<?php
    //.......
	$id=$dati['id'];
	var_dump($id);
    $data=$dati['data'];
	var_dump($data);
    $quante=$dati['numero'];
	var_dump($quante);
    $oggi=date("Y-m-d H:i:s");
	var_dump($oggi);
	if($oggi == $data){
	//......
?>
analogamente nel file form.php
PHP:
<?php
//......
$dati=mysql_fetch_array(mysql_query("SELECT *FROM inviate")); 
$id=$dati['id'];
var_dump($id);
$data=$dati['data'];
var_dump($data);
$quante=$dati['numero'];
var_dump($quante);
//verifico quante email sono state inviate oggi 
if($oggi == $data && $quante >= $numero_massimo){
//......
?>
questo anche se mi sembra che nel form.php tu abbia sbagliato la formattazione della data
$oggi=date("Y-m-d");
dovrebbe essere anche li
$oggi=date("Y-m-d H:i:s");

comunqe un consiglio
metti un vardump alla volta, provi se ok lo togli e metti il successivo, così via sino a che non si trova l'errore.
ricorda che spesso il debug è più lungo che fare uno script
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
comunqe un consiglio
metti un vardump alla volta, provi se ok lo togli e metti il successivo, così via sino a che non si trova l'errore.
ricorda che spesso il debug è più lungo che fare uno script

Mi hanno sospeso l'account per spamming ?_? ma che è?? Vabè poco male tanto era un account test.. l'ho cancellato e ne ho fatto uno nuovo.

Ho messo tutto sul nuovo account e ricreato la tabella.

Ti posto i valori per il form.php

PHP:
$id=$dati['id']; 
var_dump($id);
Codice:
string(1) "1"
________________________________________________________________________________
PHP:
$data=$dati['data']; 
    var_dump($data);
Codice:
string(19) "2012-06-14 14:41:01"
________________________________________________________________________________
credo sia qui il problema perchè mi restituisce valore 0
PHP:
$quante=$dati['numero']; 
    var_dump($quante);
Codice:
string(1) "0"
________________________________________________________________________________
Qui invece porta l'orario non corretto adesso invece delle 14 sono le 20.54 ma penso che questo dipenda dal server.
PHP:
$oggi=date("Y-m-d H:i:s");
var_dump($oggi);
Codice:
string(19) "2012-06-14 14:54:38"


Ora proseguo e nel prossimo messaggio metto quello dell'invio.php
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
invio.php

PHP:
$id=$dati['id']; 
var_dump($id);
Codice:
string(1) "1"
_______________________________________________
PHP:
$data=$dati['data']; 
var_dump($data);
Codice:
string(19) "2012-06-14 15:01:52"
_______________________________________________

Qui di nuovo il valore 0 nonostante abbia inviato 2 mail.
PHP:
$quante=$dati['numero']; 
var_dump($quante);
Codice:
string(1) "0"

questo anche se mi sembra che nel form.php tu abbia sbagliato la formattazione della data
$oggi=date("Y-m-d");
dovrebbe essere anche li
$oggi=date("Y-m-d H:i:s");

Di questo me ne ero già accorto proprio mentre postavo ^^
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
scusa ti ho fatto lavorare per niente.
sono incorso in un errore di logiga. l'inghippo sta nel formato della data Y-m-d H:i:s.
cosa succede:
appena parti (es) la data nel db è 2012-06-15 08:22:37
al secondo giro (seconda email) leggi la data attuale e questa sarà 2012-06-15 08:22:54 (sono passati alcuni secondi)
quindi quando fa il confronto se azzerare o meno risulta evidente che 2012-06-15 08:22:54 != 2012-06-15 08:22:37 e quindi riazzera il contatore.
risultato il contatore si azzera NON ogni giorno, ma ogni secondo.
ti butto giù le modifiche (un po' di pazienza) e te le posto.

mi sono diementicato il principio basilare della programmazione:
"uno script NON fa quello che vorresti che facesse, ma quello che gli DICI di fare"
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ecco le correzioni.
1. elimina la tabella che hai fatto correggi crea_tabella.php e rilancia
PHP:
<?php
require_once "connessione.php";
mysql_query("
CREATE TABLE IF NOT EXISTS `inviate` (
`id` INT( 6 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`data` VARCHAR (10) NOT NULL ,
`numero` INT( 6 ) NOT NULL DEFAULT '0'
) ENGINE = MYISAM ;")
//$data_iniziale=date("Y-m-d");
mysql_query("INSERT INTO inviate(data, numero) VALUES('0000-00-00', 0)");
?>
non usiamo la formattazione del campo DATE ma VARCHAR cioè una semplice stringa
2. nel form.php rimetti $oggi
PHP:
//...
$oggi=date("Y-m-d");
//....
3. in invio.php
PHP:
//......
$oggi=date("Y-m-d");  
    if($oggi == $data){ 
        //aggiorno il numero di email inviate oggi 
        $up=mysql_query("UPDATE inviate SET numero=numero+1 WHERE id=$id"); 
    }else{ 
        $up=mysql_query("UPDATE inviate SET data= '$oggi', numero=0  WHERE id=$id"); 
    } 
//.....

in questo modo la data si modifica solo ogni giorno e quindi ti azzera il contatore solo quando sono passete 24 ore

credo che adesso dovrebbe funziare il tutto
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
ciao
scusa ti ho fatto lavorare per niente.
sono incorso in un errore di logiga. l'inghippo sta nel formato della data Y-m-d H:i:s.
cosa succede:
appena parti (es) la data nel db è 2012-06-15 08:22:37
al secondo giro (seconda email) leggi la data attuale e questa sarà 2012-06-15 08:22:54 (sono passati alcuni secondi)
quindi quando fa il confronto se azzerare o meno risulta evidente che 2012-06-15 08:22:54 != 2012-06-15 08:22:37 e quindi riazzera il contatore.
risultato il contatore si azzera NON ogni giorno, ma ogni secondo.
ti butto giù le modifiche (un po' di pazienza) e te le posto.

mi sono diementicato il principio basilare della programmazione:
"uno script NON fa quello che vorresti che facesse, ma quello che gli DICI di fare"

Fanciullo ma di che ti scusi??
1. con i tuoi consigli ho avuto un infarinatura leggerissima di comunicazione tra php e mysql
2. ho scoperto var_dump e i benefici che porta
3. mi stai aiutando a migliorare un form che serve a me in maniera gratuita

Tutti lati positivi :mavieni: :pernacchi

EDIT

credo ci sia un errore nella crea_tabella.php
PHP:
) ENGINE = MYISAM ;") ; //mancava il ; di nuovo xD
 
Ultima modifica:

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Funziona!!!!!!!!!!

L'unica cosa ad es, che se imposto il limite di 2 ne devo mandare 3 per vedere il limite ma penso che questo sia voluto:

PHP:
    $dati=mysql_fetch_array(mysql_query("SELECT *FROM inviate"));//non metto il controllo per la prima volta di utilizzo


no sono un "diversamente giovane"

In fondo in fondo, credo che noi maschi non smettiamo mai di essere fanciulli, credo che conserviamo sempre un pò di immaturità almeno in certi comportamenti "giocosi"... ed è bellissimo x)
 
Discussioni simili
Autore Titolo Forum Risposte Data
felino Script PHP per leggere un file JSON. autenticazione? PHP 4
romeocharly [PHP] Script per rinominare in automatico le immagini inviate da ftp PHP 0
A [PHP] Script con array con numeri che iniziano per 00 PHP 2
TpD [PHP] Script per organizzazione presenza eventi PHP 3
webmachine [PHP] Script per censurare parole PHP 4
M [PHP] Script per controllo disponibilitá negozio in citta PHP 4
K Script PHP per leggere array.txt Presentati al Forum 3
Mauro Guardiani [PHP] script per caricamento video PHP 0
romeocharly Creare un script/codice in php per collegare un id mysql con un file PHP 0
xone [Vendo] Script php+mysql autocostruito per gestione giacenze magazzino Offerte e Richieste di Lavoro e/o Collaborazione 0
F Script php per IP camera PHP 12
IImanuII Licenza per script in PHP PHP 2
S aiuto per script PHP/OOP PHP 2
filippino Script PHP per estrarre dati estrazioni da sito "10 e lotto" PHP 0
K creare uno script in php , per generare in modo automatico query PHP 2
S countdown in php e script per aprire 2 siti contemporanemante PHP 1
U php-mysql script per convertire valori $_POST PHP 2
H Script php per link 'Aggiungi agli amici'? PHP 34
T [Offro Lavoro] CERCASI PROGRAMMATORE PHP per singoli script Offerte e Richieste di Lavoro e/o Collaborazione 2
V Script per distanza indirizzi [era: Script Php che non capisco se funzioni !] PHP 2
C script php per posizionamento su google PHP 0
R script per redirect php ad orari stabiliti PHP 31
M Script php per cancellare file PHP 1
K Script in PHP per gestione sito da utente PHP 6
A cerco script php per sincro db mysql CMS (Content Management System) 4
M Editare uno script php per arricchirlo PHP 9
M php script per classifica PHP 2
Z query sql e script php per ordinamento dati tabella PHP 2
U aiuto per script php inviare una mail PHP 1
SolidSnake4 miglior script per l'upload di immagini con php su DB PHP 5
H Php script per i .swf giochini PHP 0
G Script php per invio email con controllo sintassi e record MX PHP 0
G Script php per invio email con controllo sintassi e record MX PHP 7
S Script per creare Email in PHP PHP 1
M MySQL e PHP: script particolare per vBulletin! PHP 43
P lanciare script asp (o php) da jquery Javascript 1
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
M Collegamento tra form html e script php PHP 4
felino PHP e script generazione file excel PHP 2
R Primo script in PHP / CSS PHP 4
T [a pagamento] programmatore PHP che mi aiuti a migrare gli script da vecchia versione PHP a nuova Offerte e Richieste di Lavoro e/o Collaborazione 1
Max 1 [PHP] Script che funziona in locale e non online PHP 16
K Help: problema con uno script di booking in php! PHP 0
O [PHP] inviare dati da form e script ajax PHP 0
P [PHP] Aggiungere un mio script a prestashop? PHP 10
D [Javascript] inserire uno script in un file php Javascript 6
Gabriele15497514 php testo errato durante la lettura del file txt quando lo script viene eseguito contemporaneamente PHP 3
D [PHP] script che invii una mail automatica dopo risposta ad una discussione di un forum PHP 0
T interpretare uno script php non fatto da me... PHP 3
O Script PHP e loro visibilità PHP 4

Discussioni simili