[PHP] Problema if else

xLuciano

Nuovo Utente
17 Feb 2018
15
0
1
Buongiorno,

premetto che sono un principiante con html e php.

Mi sto cimentando con la creazione di un form, tipo POST, ho un problema nella pagina php con le istruzioni if ed else. Vorrei che all'invio dell'email (condizione) si aprisse una pagina del sito (.html) altrimenti (else) se ne aprisse un'altra. Tutti i tutorial che ho trovato spiegano solo come far scrivere una frase (echo) e tutti i tentativi che ho fatto per rimandare ad una pagina non mi funzionano. Qualcuno è così gentile da indicarmi che istruzioni devo inserire?
Di seguito il codice:
PHP:
<?php
   $headers = $_POST ['email'];
   $nome = $_POST ['nome'];
   $cognome = $_POST ['cognome'];
   $citta = $_POST ['citta'];
   $tel = $_POST ['tel'];
   $email = $_POST ['email'];
   $textarea = $_POST ['textarea'];
   $checkbox = $_POST ['checkbox'];

           $to = 'miaemail@mail.it';

       $contenuto = "Nome: " . $nome . "\r\n" . "Cognome: " . $cognome . "\r\n" . "Città: " . $citta . "\r\n" . "Telefono: " . $tel . "\r\n" . "Email: " . $email . "\r\n" . "Privacy: " . $checkbox . "\r\n" . "Messaggio: " . $textarea;

       $success = mail( $to, $headers, $contenuto );

       if ($success) { header("Location: http://www.miosito.html"); } else { echo "KO"; }

?>

Grazie
Luciano
 
Ciao Luciano,
scusa la domanda banale, il form per l'input dei dati punta sullo script php postato sopra?
HTML:
<form action="pagina.php" method="post">

Nella pagina.php dovresti implementare il codice di cui sopra, e dovrebbe funzionare...
Un consiglio, prima di assegnare direttamente le variabili conviene effettuare il test di esistenza dell'input, tipo
PHP:
if(isset($_POST['nome'))$nome=$_POST['nome'];
else $nome='';
altrimenti potresti inciampare in errori...

Dovresti puntare su http://www.miosito.it/pagina_che_gestisce_gli_input.php

Spero sia utile.
 
Ciao,
certamente l'action del form è corretto, infatti le email arrivano correttamente, ma dopo l'invio dell'email si apre una pagina vuota con l'indirizzo del php. non riesco a capire come indicare nel php la pagina da aprirsi al verificarsi della condizione di invio email. Nel codice che ho postato ho provato a mettere nell'if l'attributo header con l'indirizzo della pagina di destinazione ma non funziona. Ci sarà un altro modo per scriverlo.
 
Probabilmente se non funziona header_location ha iniziato a costruire l'output, quindi prima di verificare il cambio della pagina abilita gli errori sullo script che gestisce i dati e vedi cosa dice, probabilmente la
PHP:
$success = mail( $to, $headers, $contenuto );
non è di tipo bool e stampa a video dei dati.... controlla facendo un var_dump della variabile success
 
$headers = $_POST ['email'];
$nome = $_POST ['nome'];
$cognome = $_POST ['cognome'];
$citta = $_POST ['citta'];
$tel = $_POST ['tel'];
$email = $_POST ['email'];
$textarea = $_POST ['textarea'];
$checkbox = $_POST ['checkbox'];

$to = 'miaemail@mail.it';

$contenuto = "Nome: " . $nome . "\r\n" . "Cognome: " . $cognome . "\r\n" . "Città: " . $citta . "\r\n" . "Telefono: " . $tel . "\r\n" . "Email: " . $email . "\r\n" . "Privacy: " . $checkbox . "\r\n" . "Messaggio: " . $textarea;

$success = mail( $to, $headers, $contenuto );
var_dump($success);die;
//if (
$success) { header("Location: http://www.miosito.html"); } else { echo "KO"; }
 
PHP:
  if ($success) { header("location: http://www.miosito.it/pagina.html"); } else { echo "KO"; }
Nel caso posta il codice!
 
si si, l'indirizzo della pagina nella location è corretto, se lo metto nel brouser si apre correttamente.
 
ma non si apre quando compili il form e invii. Si apre una pagina vuota con indirizzo del php
 
Pagina 1: a_.php
Pagina 2: b_.php
Pagina 3: pagina_redir.php

Pagina 1 contentente il form
HTML:
<form method="post" action="b_.php">

Email <input type="text" name="mail" ><br>
Redir <input type="checkbox" name="redir">

<button type="submit">
    INIVA
</button>
</form>


pagina 2 - elaborazione dati
PHP:
if(isset($_POST['mail'])){

    //fai qualcosa
    if(isset($_POST['redir'])){
        header('location:pagina_redir.php');
    }else{
        echo 'KO';
    }
}

pagina 3 - redirect in caso di success
PHP:
echo 'PAGINA REDIR';
 
HTML:
<html>
<head>
<meta charset=utf-8" />
<title>Modulo di contatto</title>
</head>
<body>
<form action="conferma.php" method="POST">
<fieldset>
<div>
   
    <input type="text" id="nome" name="nome" placeholder="Il tuo nome" required />
   
    <input type="text" id="cognome" name="cognome" placeholder="Il tuo cognome" required />
</div>
<br>
<div>
   
    <input type="text" id="citta" name="citta" placeholder="La città di residenza" required />
   
    <input type="text" id="tel" name="tel" placeholder="Il tuo numero di telefono" required />
</div>
<br>
<div>
   
    <input type="text" id="email" name="email" placeholder="La tua email principale" required />
</div>
<br>
<div>
    <label for="textarea">Eventuale messaggio</label><br>
    <textarea id="textarea" name="textarea" cols="50" rows="10"></textarea>
</div>
<br>
<div>
    <input type="checkbox" id="checkbox" name="checkbox" required />
    <label for="checkbox">Privacy</label>
    <input type="submit" value="Clicca per un contatto">
</div>
</fieldset>
</form>
</body>
</html>

PHP:
<?php
    $headers = $_POST ['email'];
    $nome = $_POST ['nome'];
    $cognome = $_POST ['cognome'];
    $citta = $_POST ['citta'];
    $tel = $_POST ['tel'];
    $email = $_POST ['email'];
    $textarea = $_POST ['textarea'];
    $checkbox = $_POST ['checkbox'];
       
    $to = 'miaemail@email.it';
   
    $contenuto = "Nome: " . $nome . "\r\n" . "Cognome: " . $cognome . "\r\n" . "Città: " . $citta . "\r\n" . "Telefono: " . $tel . "\r\n" . "Email: " . $email . "\r\n" . "Privacy: " . $checkbox . "\r\n" . "Messaggio: " . $textarea;
   
    $success = mail( $to, $headers, $contenuto );
   
    if ($success) { header( "http://www.miosito.it/pagina.html"); } else { echo "KO"; }
       
   
?>
 
Allora, come ti avevo anticipato, probabilmente la funzione mail effettua qualche echo e print di qualche eccezione perchè senza l'invio email funziona.... prova togliere l'invio email e vedi se l'app si comporta come da te sperato.
 
Ok, faccio tutte le prove che mi suggerisci, purtroppo ora devo assentarmi dal pc. Ti ringrazio molto, dopo le prove posto l'esito.
Grazie ancora
 

Discussioni simili