<?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
?>
ciao
per vedere il formato del campo data prima aggiungi nel form
provi ad usare lo script di invio e guardi è posti cosa ti restituisce il var_dumpPHP:<?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 ?>
Parse error: syntax error, unexpected T_STRING in /******/crea_tabella.php on line 9
se non crea la tabella.Il valore è NULL
non riesco a vederlo (del resto ho fatto il copy/paste da mysqladmin)Parse error: syntax error, unexpected T_STRING in /home/a9356301/public_html/invio/tabella.php on line 9
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
or die mysql_error();
<?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)");
?>
$oggi=date("d m Y");
$oggi=date("Y-m-d H:i:s");
Parse error: syntax error, unexpected T_VARIABLE in /****/crea_tabella.php on line 9
$data_iniziale=date("Y-m-d H:i:s");
<?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)");
?>
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
$mumero_massimo=10;
$oggi=date("Y-m-d H:i:s");//!!!verifica che sia nello stesso formato di quello che hai nel db
<?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>
$numero_massimo=10;//che puoi modificare
<?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=" <img src=\"./sign_warning.png\" align=\"absmiddle\"> 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=" <img src=\"./sign_warning.png\" align=\"absmiddle\"> Inserire un indirizzo email valido.";
str=false;
}
if(document.modulo.oggetto.value=='')
{
document.getElementById("oggetto").innerHTML=" <img src=\"./sign_warning.png\" align=\"absmiddle\"> Inserire l\'oggetto della mail.";
str=false;
}
if(document.modulo.messaggio.value=='')
{
document.getElementById("messaggio").innerHTML=" <img src=\"./sign_warning.png\" align=\"absmiddle\"> 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 :</b> <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 :</b> <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 :</b> <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 :</b> <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 :</b> <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 :</b> <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
?>
<?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){
//......
?>
<?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){
//......
?>
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
$id=$dati['id'];
var_dump($id);
string(1) "1"
$data=$dati['data'];
var_dump($data);
string(19) "2012-06-14 14:41:01"
$quante=$dati['numero'];
var_dump($quante);
string(1) "0"
$oggi=date("Y-m-d H:i:s");
var_dump($oggi);
string(19) "2012-06-14 14:54:38"
$id=$dati['id'];
var_dump($id);
string(1) "1"
$data=$dati['data'];
var_dump($data);
string(19) "2012-06-14 15:01:52"
$quante=$dati['numero'];
var_dump($quante);
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");
<?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)");
?>
//...
$oggi=date("Y-m-d");
//....
//......
$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");
}
//.....
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"
) ENGINE = MYISAM ;") ; //mancava il ; di nuovo xD
no sono un "diversamente giovane"fanciullo
$dati=mysql_fetch_array(mysql_query("SELECT *FROM inviate"));//non metto il controllo per la prima volta di utilizzo
no sono un "diversamente giovane"
finalmenteFunziona!!!!!!!!!!
metti il numero massimo di una unità inferiore a quello che vorrestiL'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
ciao
finalmente
metti il numero massimo di una unità inferiore a quello che vorresti