ciao dottwatson ho dato un occhiata al codice postato ma ho notato che hai solamente messo all'inizio del codice
extract($_POST);
ma poi il codice che mi avevi postato precedentemente che ci devo fare?
sono un attimino confus![]()
ciao dottwatson ho dato un occhiata al codice postato ma ho notato che hai solamente messo all'inizio del codice
extract($_POST);
ma poi il codice che mi avevi postato precedentemente che ci devo fare?
sono un attimino confus![]()
Il PHP non è il mio forte e con i Phpisti Malvisti sono un webmaster malvisto
pero' con la Letteratura Italiana me la cavicchio.... ghghg...
è un piccolo trucchetto che rende la facile la vita....
extract ($_POST)
immaginiamo che tu ricevi dal form html i campi nome_cognome, email, commenti.
per accedere a quelle variabili dovresti scrivere
$_POST['nome_cognome']
$_POST['email']
$_POST['commenti']
utlizzando extract($_POST) (che $_POST è come se fosse un array di tutto ciò che gli arriva dal form) non fai altro che accorciare i tempi e lui fa quello che faresti tu scrivendo
$nome_cognome=$_POST['nome_cognome'];
$email=$_POST['email'];
$commenti=$_POST['commenti'];
ovvero legge la chiave della variabile $_POST, la assegna al nome della variabile con $ davanti, e a quella variabile assegna il valore corrispondente.
funziona con tutti gli array mentre il suo opposto è compact()
il tuo codice era gia completo di per se come lo avevi premodificato, ma non sarebbe mai funzionato in quanto $nome_cognome per lui era una nuova variabile e basta,quindi vuota.
Con extract ($_POST) hai fatto tutte le assegnazioni in una botta sola.
Non viene usato troppo spesso e non capisco perchè vista la sua enorme comodità. Come tante altre cose del php
![]()
Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle
il mio profilo su PHPClasses e il mio blog laboweb
ok capito![]()
adesso pero' non ho ancora inserito i dati relativi alla password... ricordi?come devo cambiare il codice?
Il PHP non è il mio forte e con i Phpisti Malvisti sono un webmaster malvisto
pero' con la Letteratura Italiana me la cavicchio.... ghghg...
ciao dottwatson,
le funzioni extract() e compact() non le conoscevo nemmeno io ma premetto che sono agli inizi.![]()
Dando un occhiata al manuale, credo che non viene usata frequentemente, perchè potrebbero insorgere dei problemi di sicurezza, almeno per gli input compilati dagli utenti. Forse va bene come soluzione provvisoria per ovviare al problema del register_globals settato su off.Originariamente inviato da dottwatson
Non viene usato troppo spesso e non capisco perchè vista la sua enorme comodità. Come tante altre cose del php
Citazione del manuale: Non utilizzare extract() su dati non convalidati, come gli input degli utenti ($_GET, ...). Se lo si deve fare, ad esempio per eseguire temporaneamente vecchio codice basato su register_globals,...
Scusa la parentesi fedemarkez, ma hai provato almeno a metter dentro gli input per lo username e la password nella parte HTML? Poi il resto in PHP ti ha già risposto dottwatson vedi all'inizio.
jeppox io sono fermo al codice che ho postato poco sopra... non sono andato avanti per non fare casini... come devo andare avanti?
Il PHP non è il mio forte e con i Phpisti Malvisti sono un webmaster malvisto
pero' con la Letteratura Italiana me la cavicchio.... ghghg...
come devi fare, ti è stato detto sopra da diversi, dici che non vuoi fare casini, ma a me puzza di non voglia di farne. inserisci 2 input per lo username e la password nella parte HTML, se non sai come, qui trovi un estratto della guida di html.it
http://xhtml.html.it/guide/lezione/1698/il-tag-input/
non restare fermo ad aspettare, almeno prova o leggi, se no non impari mai no?
dopo un anno e mezzo si dovrebbe essere in grado almeno di sapere dove leggere no?
leggi anche la parte sui moduli:
http://xhtml.html.it/guide/leggi/51/guida-html/
:rollo:
non ho bisogno del campo username, mi serve solo il campo password![]()
allora nella pagina del form ho scritto questo:
puo' andare?Codice PHP:<input name="password" type="password" value="" size="10">
ora pero' mi devi suggerire come integrare il codice PHP che mi ha scritto dottwatson sul mio file PHP.. quello da solo non riesco!![]()
Il PHP non è il mio forte e con i Phpisti Malvisti sono un webmaster malvisto
pero' con la Letteratura Italiana me la cavicchio.... ghghg...
ora prima di inviare l'email fai un piccolo controllo della password in PHP come ti ha già postato dottwatson all'inizio:
Codice PHP://settaggio della password
$password = "passwordchevuoi";
if ($_POST['password'] == $password)
{
//inizio l'invio dell'email
mail("$destinatario","$oggetto_email","$corpo", "From: $nome_mittente <$email_mittente>");
}
else
{
//spiacente password errata
}
...
allora ho modificato il codice, pero' anche se scrivo una password diversa da quella impostata, mi manda lo stesso l'email![]()
ti posto il codice aggiornato:
Codice PHP:<?php
//email del destinatario del modulo
$destinatario = "maimail@miamail.it";
//nome mittente per la corretta intestazione del modulo
$nome_mittente = "$nome_e_cognome";
//email mittente per per la corretta intestazione del modulo
$email_mittente = "$email";
//oggetto dell'email
$oggetto_email = "$tipo";
//se si vogliono rendere tutti i campi NON OBBLIGATORI impostare su "y". valori possibili: "y" e "n"
$all_free = "n";
//se invece avete messo "n" inserire tra virgolette, separati da virgola, i nomi dei campi da rendere OBBLIGATORI
//Esempio: $campi_req = array("telefono","via");
$campi_req = array("nome_e_cognome","messaggio");
//controllo del campo email? valori possibili: "y" e "n"
$obbligo_email = "y";
//obbligare l'utente ad accettare le condizioni? valori possibili: "y" e "n"
//$accetta_condizioni = "y";
//url della pagina di ringraziamento
$pagina_grazie = "grazie.htm";
//url della pagina errore campi vuoti
$pagina_error_empty = "campi_vuoti.htm";
//url della pagina errore email
$pagina_error_email = "errore_email.htm";
//url della pagina errore condizioni non accettate
//$pagina_error_condizioni = "http://www.sito.it/errore_condizioni.htm";
//url della pagina errore invio non autorizzato (mancanza di referer)
$pagina_error_referer = "errore_email.htm";
//settaggio della password
$password = "abc555";
if ($_POST['password'] == $password)
{
//inizio l'invio dell'email
mail("$destinatario","$oggetto_email","$corpo", "From: $nome_mittente <$email_mittente>");
}
else
{
//spiacente password errata
}
//orario e data
$ora = date ("H:i:s");
$data = date ("d/m/Y");
//intestazione dell'email (arriva al destinatario)
$corpo = "
Modulo inviato il $data alle ore $ora\n
Riepilogo dati:\n
____________________________________________________________\n";
//======================= NON TOCCARE NULLA... SE NON VUOI INCASINARE QUALCOSA =======================\
########### CODICE VARIO ###########
//variabili per rendere lo script compatibile anche con PHP 4.2 - copyright di Chris
if(!isset($_SERVER) OR !$_SERVER OR !is_array($_SERVER) OR count(array_diff($_SERVER, $HTTP_SERVER_VARS))){
$_POST = &$HTTP_POST_VARS;
}
//prendo il numero IP
if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
if ($_SERVER["HTTP_X_FORWARDED_FOR"] == "") {
$ipnumb = getenv("REMOTE_ADDR");
}else {
$ipnumb = getenv("HTTP_X_FORWARDED_FOR");
}
} else {
$ipnumb = getenv("REMOTE_ADDR");
}
###################################
//breve controllo
if(empty($_SERVER["HTTP_REFERER"])){
header ("Location: $pagina_error_referer");
exit();
}
########### CONTROLLO DEI CAMPI ###########
$control_campi = 0;
if($all_free != "y"){
foreach($_POST as $key => $valore){
if(in_array($key,$campi_req)){
if(trim($valore) == ""){
$control_campi++;
}
}
}
} else {
$control_campi = 0;
}
########### CONTROLLO EMAIL ###########
$control_email = 0;
if($obbligo_email == "y"){
if(isset($_POST['email'])){
//espressione regolare
if(!eregi("^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9_-])+.)+[a-z]{2,6}$", $_POST['email'])){
$control_email++;
}
} else {
$control_email = 0;
}
}
########### CONTROLLO CONDIZIONI ###########
$control_condizioni = 0;
if($accetta_condizioni == "y"){
if(isset($_POST['trattamento_dati']) && $_POST['trattamento_dati'] == "accetto"){
$control_condizioni = 0;
} else {
$control_condizioni ++;
}
}
########### VAI CON L'INVIO DELL'EMAIL ###########
if($control_campi == 0){
if($control_email == 0){
if($control_condizioni == 0){
foreach($_POST as $key => $valore){
$key = ucfirst(stripslashes(trim($key)));
$valore = stripslashes(trim($valore));
$key = str_replace("_"," ",$key);
if(trim($valore) == "") $valore = "Non compilato";
$corpo .= $key .": ". $valore ."\n\n";
}
$corpo .= "Numero IP: $ipnumb"."\n\n";
$corpo .= "
____________________________________________________________ \n\n
";
//inizio l'invio dell'email
mail("$destinatario","$oggetto_email","$corpo", "From: $nome_mittente <$email_mittente>");
header ("Location: $pagina_grazie");
} else {
header ("Location: $pagina_error_condizioni");
}
} else {
header ("Location: $pagina_error_email");
}
} else {
header ("Location: $pagina_error_empty");
}
?>
Il PHP non è il mio forte e con i Phpisti Malvisti sono un webmaster malvisto
pero' con la Letteratura Italiana me la cavicchio.... ghghg...
si, dove l'hai messo tu è normale che ti spedisca l'email.
il controllo lo devi effettuare poco prima dell'invio dell'email giù in basso, nella riga dove hai la funzione mail(), oh signur...
Codice PHP://inizio l'invio dell'email
mail("$destinatario","$oggetto_email","$corpo", "From: $nome_mittente <$email_mittente>");