[PHP] Form iscrizione senza DB con comandi deprecated

sator1950

Nuovo Utente
1 Ago 2016
3
0
1
43
Ciao a tutti,

sono nuovo del forum e mi complimento per gli strumenti e consigli che date.
Ho un form di iscrizione con controllo di validità dei campi sul mio sito, che non funziona più in quanto contiene diverse istruzioni deprecated (ereg, eregi, split).
Essendo un file preso da internet che personalizzai a suo tempo ma non essendo un programmatore PHP, ho grosse difficoltà nell'adeguare le istruzione PCRE sostitutive delle attuali.
Il sito funziona con un form in html i cui campi vengono validati da un file php e alla fine invia mail a colui che si iscrive.
Al momento sono riuscito a sostituire tutte le istruzioni ma il form non manda la mail fornendo questo errore:

mail(): SMTP server response: 503 5.5.2 Need rcpt command

alla riga corrispondente del codice rilevo quanto segue:

function mail_it($content, $titolo, $email, $contenitore) {
mail($contenitore, $titolo, $content, "From: $email\r\nReply-To: $email\r\nX-Mailer: DT_formmail");
}

$contenitore è definito da questo corpo di codice di cui ho modificato il comando deprecated scambiandolo con preg_split:

$contenitore_finale = preg_split('/,/',$contenitore);
for ($i=0;$i<count($contenitore_finale);$i++) {
$contenitore_to_test = trim($contenitore_finale[$i]);}

Qualcuno saprebbe consigliarmi come potrei risolvere modificando l'attuale file o in alternativa mi potrebbe segnalare un form sostitutivo da implementare solo con i campi inseriti nel form html?
Grazie mille.
 

alankanz

Lupacchiotto
Membro dello Staff
MOD
18 Giu 2014
147
5
18
Roma
Ciao,

Quell'errore sta a significare che il server non effettua il relay (il rinvio della mail).
Molto probabilmente per via delle impostazioni di sicurezza, in quanto la funzione php mail() non effettua nessun tipo di autenticazione verso il server SMTP di posta.

Per il momento mi vengono in mente due soluzioni:

La prima è molto pericolosa in quanto prevede di configurare il server SMTP ad accettare connessioni anonime.

La seconda invece prevede l'utilizzo della libreria PHPMailer configurandola opportunamente funziona sicuro.

La puoi trovare qui https://www.mrw.it/php/inviare-email-classe-phpmailer_7047.html


fammi sapere
 
Ultima modifica:

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.449
338
83
si certo anche io avrei consigliato quella guida ma il problema che anche quella fornisce il link che non funziona
 

sator1950

Nuovo Utente
1 Ago 2016
3
0
1
43
Proverò ma penso possa esserci qualche errore nel formato della mail a cui inviare. Infatti la variabile $contenitore è quello che definisce la mail dell'inbox a cui far pervenire i dati di iscrizione.
Quella porzione di codice l'ho adeguata allo standard PCRE ma potrei aver sbagliato qualcosa.
Nello specifico:

PHP:
$contenitore_finale = preg_split('/,/',$contenitore);
for ($i=0;$i<count($contenitore_finale);$i++) {
$contenitore_to_test = trim($contenitore_finale[$i]);
  if (!eregi("^[_\\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\\.)+[a-z]{2,3}$", $contenitore_to_test)) {
  print_error("<b>Occorre un indirizzo email valido per continuare ($contenitore_to_test) </b>");
  }
}

secondo voi preg_split è sintatticamente corretto?
Inizialmente era (con Split ed Eregi):

PHP:
$contenitore_finale = split(',',$contenitore);
for ($i=0;$i<count($contenitore_finale);$i++) {
  $contenitore_to_test = trim($contenitore_finale[$i]);
  if (!eregi("^[_\\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\\.)+[a-z]{2,3}$", $contenitore_to_test)) {
  print_error("<b>Occorre un indirizzo email valido per continuare ($contenitore_to_test) </b>");
  }
}

Grazie
 
Ultima modifica di un moderatore:

alankanz

Lupacchiotto
Membro dello Staff
MOD
18 Giu 2014
147
5
18
Roma
Prova con questa funzione per controllare la mail

PHP:
function mailok($mail)
{
    // elimino spazi, ritorni a capo e tutto quello che non serve all'estremità della stringa
    $mail = trim($mail);

    // se mi restituisce una stringa vuota la mail non è corretta
    if(!$mail){
        returnfalse;
    }

    // c'è solo una @? si ok! no ko!
    $num_at = count(explode('@', $mail ))-1;
    if($num_at !=1){
        returnfalse;
    }

    // altri caratteri pericolosi?? no grazie
    if(strpos($mail,';')|| strpos($mail,',')|| strpos($mail,' ')){
        returnfalse;
    }

    // controllo se il formato è quello classico di una mail
    if(!preg_match('/^[\w\.\-]+@\w+[\w\.\-]*?\.\w{1,4}$/', $mail)){
        returnfalse;
    }

    returntrue;
}

Chiedo scusa per i commenti ma non ho tempo di modificarli ma quando li ho scritti non ero serio!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
più semplicemente
PHP:
function mailok($mail){
    $mail=filter_var($mail, FILTER_SANITIZE_EMAIL);//sanifica
    if(!filter_var(email, FILTER_VALIDATE_EMAIL)){//controlla
        return false:
    }else{
        return true;
    }
}
dimenticavo la funzione ereg è deprecata
 

sator1950

Nuovo Utente
1 Ago 2016
3
0
1
43
Grazie Borgo, questa porzione di codice è già adeguata alla variabile del mio file?
Quale funzione dovrebbe sostituire nel codice che ti ho riportato?
Secondo te è possibile che il preg_split lo abbia convertito bene?
Non mi convince la porzione '/,/', prima con lo splti era ','.

PHP:
$contenitore_finale = preg_split('/,/',$contenitore);
for ($i=0;$i<count($contenitore_finale);$i++) {
$contenitore_to_test = trim($contenitore_finale[$i]);
 if (!eregi("^[_\\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\\.)+[a-z]{2,3}$", $contenitore_to_test)) {
 print_error("<b>Occorre un indirizzo email valido per continuare ($contenitore_to_test) </b>");
 }
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
non so se hai risolto (sono stato un po' impegnato) comunque se non ho capito male $contenitore_to_test dovrebbe contenere un indirizzo email
PHP:
<?php
function mailok($mail){
    $mail=filter_var($mail, FILTER_SANITIZE_EMAIL);//sanifica
    if(!filter_var(email, FILTER_VALIDATE_EMAIL)){//controlla
        return false:
    }else{
        return true;
    }
}
//....
$contenitore_finale = preg_split('/,/',$contenitore);
for ($i=0;$i<count($contenitore_finale);$i++) {
    $contenitore_to_test = trim($contenitore_finale[$i]);
    if (!mailok($contenitore_to_test)) {
        print_error("<b>Occorre un indirizzo email valido per continuare ($contenitore_to_test) </b>");
        //e qui immagino un ritorno a qualcosa
     }
    //....
}
//....
?>
 
Discussioni simili
Autore Titolo Forum Risposte Data
foki Form iscrizione PHP & MySql PHP 12
S passare un valore da un form a un file .php con metodo post PHP 4
K [php]form invio dati PHP 0
G Invio form con PHP PHP 3
M Collegamento tra form html e script php PHP 4
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
L Problemi form Pagina php HTML e CSS 3
V PHP form intersecate PHP 0
C Form email php su pagina index.html? PHP 21
L form multipla php sql,errore in inserimento MySQL 0
L Insert php sql da una form multipla PHP 6
L Campi obbligatori form php PHP 0
webmachine [PHP] [JAVASCRIPT] Form strano in HTML PHP PHP 1
G Form in php WordPress 0
F [PHP] Form html PHP 2
G FORM HTML E PHP PHP 0
S [PHP] Recupero nome immagine da Form con input file PHP 3
U PHP bottone per invio mail o ritorno al form PHP 15
O [PHP] inviare dati da form e script ajax PHP 0
B [PHP] Creare PDF dopo inserimento dati form PHP 4
C [PHP] Form con Inserimento dati dalla maschera e un menù a discesa che prende i dati dal db PHP 1
C [PHP] Form inserimento più menù a discesa PHP 9
D [PHP] Consigli su come creare form PHP 1
T [PHP] Creare Honeypot per form contatti PHP 10
A [PHP] Invio automatico dati da form PHP 6
ANDREA20 [PHP] [HTML] crea form di contatto PHP 4
ANDREA20 [PHP] form modulo contattp PHP 5
M HELP FORM CREATO IN PHP PHP 14
L [PHP] Form da select compilare campi automaticamente PHP 1
I [PHP] inviare form con allegato tramite una mail PHP 1
A [PHP] Controllo nome utente form di registrazione PHP 4
B [PHP] Invio mail automatico dopo compilazione form - db PHP 25
P PHP - Leggere una pagina passata con Form e Captcha PHP 0
Angelo Russo [PHP] [HTML] form contatti PHP 0
F [php] sicurezza password form login PHP 2
M [PHP] Problema search form PHP 3
Cosina [PHP] Preservare i campi del form solo se l'invio non ha successo PHP 5
Cosina Andare a capo nel testo della mail ricevuta dal form php PHP 1
N [PHP] filtrare input form di tipo array PHP 0
M [PHP] Framework per form complessi (configuratore prodotto) PHP 6
F [PHP] [HTML] File legato ad action in un form PHP 1
K [PHP + MYSQL ] Inserimento dati in database da form dinamico PHP 13
S [PHP] Verifica dati tramite form e annullamento codice inserito PHP 7
spider81man Scrivere su file .txt da form php PHP 2
alessandra86 [PHP] Popolamento database con form ricorsivi - problema array (foreach ) PHP 5
M [PHP] valore tabella in campo form PHP 1
K [PHP] variabili di tipo numerico nei Form PHP 1
L [PHP] Salvare csv da form dati PHP 5
O [PHP] Problema Button in form PHP 1

Discussioni simili