[PHP] checkbox e sua memorizzazione nel db

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Salve a tutti,

Vorrei creare come in tutti i forum che si rispettano controllo antipaticissimo (secondo me, perchè ci si dimentica sempre di cliccarci prima d'inviare i dati) della policy privacy o cosa dle genere. Il termine non lo ricordo esattamente. Inoltre vorrei poter mettere un unico check per la lettura del regolamento. Come poter fare ???

P.S.: Vorrei sapere dagli amministratori se anche a voi capita molto spesso che si registrano coime utenti che creano casino nel forum e pubblicità che non centra niente con il forum i cosidetti spam. Ho vbulletin e ho messo le dovute precauzioni ma non bastano sembrano. Qualche consiglio particolare oltre al ripulire ???? Grazie. Scusatemi so che questo non centra niente con l'argomento citato sopra ma ne volevo approfittare in quanto non so in quale sessione adrebbe messo. Grazie a tutti.


P.S.: Giustamente volete uno straccio di codice ed eccolo qua che prima non avevo:

Codice:
    <input name="html" type="checkbox" value="html"> Accetto il regolamento sulla privacy e di comportamento

Ora come memorizzarlo nel db ??? Grazie.
 
Ultima modifica:
Questo che posto è il risultato finale:

Codice:
<input name="html" type="checkbox" value="html"> Accetto il regolamento sulla <a href="http://www.privacy.php/">privacy </a> e il regolamento di <a href="http://www.comportamento.php/">comportamento</a>

Non capisco il perchè è blu scuro invece di bianco bah.
 
scusa paperinik vorresti inserire nel database se uno ha accettato il regolamento e la privacy? parli di uno script o del database di Vbulletin?
 
allora non sapendo come sia composto il tuo database ti spiego sommi capie poi nel caso ti aiuto con del codice.
Io in un mio sito l'ho fatto differente nel senso che se non veniva accetta la chekbox non li facevo nemmeno registrare comunque sia:
In sostanza ti basterebbe verificare che sia stata spuntata ed inserirla nel database quando isnerisci l'utente
PHP:
if(!$_POST['privacy']){
      $sqlquery = "INSERT INTOtabella VALUES(.......')
       $result = $db->query($sqlquery);
}

ovviamente nel database ti basta inserire una nuova colonna 1/0 dove 1 quando viene accettata e 0 se non vinee accettata. Poi in fase di controllo verifichis e ha 1 possono fare azioni se da 0 niet.

se ti serve un aiuto con il codice vedo di fare il possibile secondo le mie conoscenze
 
La cosa che mi hai detto sul fatto distinti e separati mi attizza parecchio io ho nel mio db il segunete campo creato a posta per attivare gli utenti:

Codice:
create table utenti (
   
id             INT(11) NOT NULL AUTO_INCREMENT,
cognome         VARCHAR(80) NOT NULL,
nome                VARCHAR(80) NOT NULL,
nascita                VARCHAR(80) NOT NULL,
nazionalita                VARCHAR(80) NOT NULL,
citta                VARCHAR(80) NOT NULL,
prov                VARCHAR(2) NOT NULL, 
username            VARCHAR(80) NOT NULL,
email                   VARCHAR(80) NOT NULL,
password            VARCHAR(12) NOT NULL,
attivo                  ENUM('1', '0') DEFAULT '0',
PRIMARY KEY (id)
);

Questo è il mio db con tutti i cami dove attivo è quello che mi dicevi tu
 
allora come già detto a me se nona ccettano non li fa nemmeno registrare, il campo per l'attivazione la usavo epr l'attivazione via email, quindi dipende da come hai impostato l'attivazione. se ti basta ttivarli con l'accettazione del regolamento e della privacy se è in fase di registrazione usi 1 nell'insert se è successivo ti basta un update
PHP:
if(!$_POST['privacy']){
      $sqlquery = "UPDATE utenti SET attivo='1'
       $result = $db->query($sqlquery);
}

poi dipende da cosa tis erve ad esempio se è per mandare i messaggi aggiungi il controllo
PHP:
if($row['attivo']==1){
//scrivi il messaggio
}

se invece il campo attivo lo usi già per una conferma tramite email o quant altro dovrai creare una ltro campo ad esempio privacy identico al campo attivo.

insomma te la puoi giocare in diversi modi tutto dipende da come hai impostato lo script e per quale uso
 
Dunque io pensavo come in un mio vecchi progetto ma ora non più funzionante di mettere il check sempre sulla privacy e sul regolamento e poi se ci riuscivo, anche un'invio dell'email per la conferma e attivazione dell'account (forse così ci potrebbero essere meno spam spero). Però per l'invio email avrei già tutto pronto se funzionasse mi manca di sapere se c'è una nuova versione di phpmailer in quanto lavoro tutto sul nas prima di metterlo online
 
non ho idea di cosa sia questo nas comunque per l'invio dell'attivazione ho questo in uno dei miei progetti

PHP:
        $intestazioni  = "MIME-Version: 1.0\r\n";
            $intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";
            /* intestazioni addizionali */
            $intestazioni .= "From: <".$mail_info.">\r\n";
            $url="http://".URL_TO_SITE."/index.php?action=active&cod=".md5($email);
            $oggetto="BLABLA"; //"Iscrizione";
            $testo=$nome." Benvenuto su BLABLA . Clicca sul seguente link per attivare l'account <a href=".$url.">LINK</a> oppure copia ed incolla il seguente link sul tuo browser<br>
            http://".URL_TO_SITE."/index.php?action=active&cod=".md5($email).""; //Clicca sul link per attivare l'account ;
            mail($email, $oggetto, $testo,$intestazioni);

nell'index poi ho emsso una condiziene se trova active e cod verifico la variabile cod che sia uguale al md5($email) che ho inserito nel database e a verifica avvenuta inserisco il nr 1 nel campo attiva

la funzione mail ha sempre funzionato correttamente

magari ci sono metodi migliori ma è parecchio tempo che uso questa ed ha sempre funzionato a dovere
 
Il nas ossia viene conosciuto anche come synolgy o qnap dei piccoli server casarecci dove sono formati da due hdd in raid 1 in modo tale che se si rompe uno dei due viene sostituito e poi c'è la ricostruzione dei dati che avviene durante la notte (esperienza personale). In genere sono sempre collegati alla rete di casa e quindi nessuno vi può entrare tranne che te. E hanno la simulazione delle pagine web
 
Ciao Monital,

Oggi sperimenterò il pezzo di codice che mi hai passato e ti saprò dire se funziona o meno. Vorrei Chiederti un'altra cosa che fa sempre parte di questa discussione penso. Ho il tastino "invio dati" sempre abilitato e vorrei fare in modo che affinchè non accettano i termini suddetti non si abilita. Questo è lo spezzone di codice che attualmente adopero:

<input type="submit" name="reg" value="Invio dati" id="submit" class="centering" />

Mi puo dare una mano anche in questo ??? Grazie.
 
Aggiornamento:

Ho aggiunto questa voce qua, visto che è in fase di registrazione e non in fase di aggiornamento del db:

$query = "INSERT INTO utenti (cognome, nome, nascita, nazionalita, citta, prov, username, email, password, attivo) "
. "VALUES('$cognome','$nome','$nascita','$nazionalita','$citta', '$prov', '$username' ,'$email', '$password', '$attivo')";
$result = mysqli_query($con,$query);

Però il risultato andando a vedere s phpmyadmin risulta vuoto, ne zero e ne 1 dove sbaglio ????? Grazie.
 
se te lo dà vuoto solo $attivo dovresti provare a fare un var_dump della variabile $attivo e vedere se te lo restitusice vuoto. come hai chiamato la input checkbox?

al riguardo del tasto una volta risolsi mettendo all'interno una cosa del genere
PHP:
<?php if(!$_POST['privacy']) echo 'disabled';?>
penso che là ti possa aiutare solo qualche funzione di js provoa vedere un pò se ho qualcosa
 
Ciao Monital,

Grazie dell'indicazione della conversazione del tasto. Oggi lo provo e ti dico com'è andata. Rispondento al tuo quesito eccola qua:

<input name="html" type="checkbox" value="html"> Accetto il regolamento sulla <a href="http://www.privacy.php/">privacy </a> e il regolamento di <a href="http://www.comportamento.php/">comportamento</a>

Mi sembra di averla chiamata semplicemente checkbox, l'ho presa da un esempio su internet, invece mi sa tanto che deve essere chiamata attivo o sbaglio ???? E questo è quello che ho inserito nell'insert che sicuramente è sbagliato:

$query = "INSERT INTO utenti (cognome, nome, nascita, nazionalita, citta, prov, username, email, password, attivo) "
. "VALUES('$cognome','$nome','$nascita','$nazionalita','$citta', '$prov', '$username' ,'$email', '$password', '$attivo')";
$result = mysqli_query($con,$query);

Se ci sono correzioni ben vengano. Grazie.
 
non ha importanza come la chiami la variabile basta che quando la richiami la richiami nella stessa maniera nel tuo caso la checkbox l'hai chiamata
HTML:
name="html"
e la variabile l'hai chiamata
PHP:
$attivo
quindi verifica che quando la richiami lo fai in maniera corretta quindi
PHP:
$attivo=$_POST['html']
o semplicemente per praticità chiami la checkbox
HTML:
<input name="attivo" type="checkbox" value="html"> Accetto il regolamento sulla <a href="http://www.privacy.php/">privacy </a> e il regolamento di <a href="http://www.comportamento.php/">comportamento</a>
e quando la richiami
PHP:
$attivo=$_POST['attivo']

poi prima di fare l'inserimento fai un var_dump cosi da accertarti che abbia preso tute le variabili

PHP:
$query = "INSERT INTO utenti (cognome, nome, nascita, nazionalita, citta, prov, username, email, password, attivo) "
. "VALUES('".$cognome."','".$nome."','".$nascita."','".$nazionalita."','".$citta."', '".$prov."', '".$username."' ,'".$email."', '".$password."', '".$attivo."')";
var_dump($query);
//$result = mysqli_query($con,$query);

spero di aver reso l'idea

modifica: ho modificato al query che mancavano gli apici corretti.
 
Ah ok grazie. Nel pome ti farò sapere com'è andata. In caso ti richiedo il tuo sito.

P.s.: in qualche post precedente ti ho spiegato cos'era un nas (nel mio caso synoligy), spero che le mie spiegazioni siano state chiare e esaudito. Qualche altra spiegazione se ti serve puoi chiedermi senza problemi. Il costo del "giocattolini" si aggira sui 400€ con due hdd da 4tb l'uno per un totale di 8 tb che messi in raid 1 diventano in pratica 4tb
 
io ormai sono troppo abituato a fare tutto in tempo reale. poi faccio quasi tutto a livello amatoriale ed il grosso è già salvato.
 
Capito. Ma ti può sempre ritornare utile. Ovviamente non sto facendo pubblicità al synology. Era solo un mio apprezzamento sull'apparecchio dovuta alla mia esperienza assolutamente positiva.
 

Discussioni simili