- Home
- Categorie
- Coding e Sistemistica
- PHP
- [Risolto] [php]Pagina di invio non visibile
-
[Risolto] [php]Pagina di invio non visibile
Salve,
mi trovo di nuovo senza programmatore(attualmente in vacanza, beato lui) e così mi sono di nuovo affacciata alla programmazione semplice...
Io per inviare una mail da un sito utilizzavo Asp...adesso sono passata al php(prova)
Tutto funziona, la mail arriva perfetta, l'unica nota dolente è che se dal browser si vuole accedere alla pagina di conferma che chiameremo "invio.php" ci si accede tranquillamente e ovviamente a me arriva una mail vuota.
Ho reso i campi della form obbligatori ma il problema non è questo.
lo script in php è riportato di seguito e si trova appunto in Invio.php.<?php $to = "[email protected]"; $subject = $_POST['object']; $body = $_POST['body']; $headers = "From: " . $_POST['mail'] . "\n"; mail($to,$object,$body,$headers); ?> ```Con asp non avevo problemi perchè se dal browser provavo ad accedere ad" invio.asp" ricevevo un messaggio di errore...con php non so dove sbattere la testa. Ringrazio come sempre in anticipo chi saprà aiutarmi :)
-
Ciao pikadilly,
hai provato ad inserire un controllo? Qualcosa tipo questo:if (($_POST['object'] = "") || ($_POST['body'] = "")) {
$to = "[email protected]";
$subject = $_POST['object'];
$body = $_POST['body'];
$headers = "From: " . $_POST['mail'] . "\n";
mail($to,$object,$body,$headers);
}
else {
echo "Errore, devi compilare il modulo per inviare una mail";
}
-
Ho inserito nei campi della form l'obbligo di digitare ad esempio e mail e oggetto della mail.
Ma nel documento invio no...solo il codice che ho scritto...
Ovviamente parlo di due documenti distinti:uno per la form e l'altro che ho chiamato appunto Invio.php.
-
Ecco, spostando il controllo nel file di invio ti risparmi anche il controllo in quello con il form (probabilmente fatto in jkavascript).
Prova e fammi sapere.
-
No Probabilemente...è javascript....ehehehe...
ok, adesso ci provo e aggiorno.
Grazie mille!
-
Se me lo permettete...
aggiungerei che il controllo sui cambi obbligatori (e non solo), se implementato solo con javascript non è sicuro...
Se mai potrebbe essere un qualcosa in più per avvisare l'utente di un' errata compilazione del form prima di tentare l'invio...
Ti suggerirei anche di controllare i dati che vengono immessi nel form, specialmente se vengono salvati in un database, onde evitare sql injection.
Ciao!
-
10 minuti dopo.
Credo che non faccia quello che deve o di sicuro l'ho messo male io ...
Ho messo quello che mi hai scritto al posto dello script che ho scritto io...ogni volta che invio mi dice che la form nn è stata compilata...anche se la compilo...
bua...Per ora niente database...Grazie di avermelo detto.:)
-
Ehm...errore mio. Prova a cambiare l'if con questo (o cmq a manovrarci un pò):
if (!($_POST['object'] = "") && !($_POST['body'] = ""))
-
Vediamo vediamo..
-
Bua...non va...mi da sempre il messaggio...
-
da quanto ho capito vuoi limitare l'entrata in una pagina solo a che è passato dal form?
se si, prova questo:
if($_SERVER['HTTP_REFERER'] != "http://www.iltuosito.com/latuapagina.php")
{
echo "<script>
setTimeout('location.href="http://www.iltuosito.com/latuapagina.php"',1);
</script>
";
die();
}tutto questo deve essere aggiunto al controllo sul input in php che, come già detto è poco sicuro
fatemi sapere!
-
Grazie mille, provo e ti faccio sapere.
-
Nullla...bua...
Se digito www.miosito.it/invio.php che + la pag dove si trova la conferma dell'invio...senza passare dal form che è in contatti mi spedisce una mail vuota...
-
io modificherei l'ultimo if di SHAD da
if (!($_POST['object'] = "") && !($_POST['body'] = "")){
}in
if ((trim($_POST['object']) != "") && (trim($_POST['body']) != "")) {
$to = "[email protected]";
$subject = $_POST['object'];
$body = $_POST['body'];
$headers = "From: " . $_POST['mail'] . "\n";
mail($to,$object,$body,$headers);
}
else {
echo "Errore, devi compilare il modulo per inviare una mail";
}facci sapere
bye bye
-
Ehehhehe...adesso indico un concorso,
grazie di tutti i suggerimenti...provo anche quest ultimo.
Grazie mille...
VI faccio sapere si!
-
Pikadilly credo che sia più corretto vedere se la variabile $_POST sia settata, in quanto se il pb è se viene chiamata
o il file direttamente senza form allora $_POST non è neanche impostata quindi basta fare if (isset($_POST)) {invia} else {qualcosaltro}bye bye
-
Riporto up la discussione perchè ad un mese e mezzo dal primo post ho capito dove sbagliavo.
Il codice
<?php
if ((trim($_POST['object']) != "") && (trim($_POST['body']) != "")) {
$to = "[email protected]";
$subject = $_POST['object'];
$body = $_POST['body'];
$headers = "From: " . $_POST['mail'] . "\n";
mail($to,$object,$body,$headers);
echo"La mail è stata inviata correttamente";
}
else {
echo "Errore, devi compilare il modulo per inviare una mail";
}
?>
Lo mettevo in cima alla pagina, prima del doctype, in verità lo script che mi mi avete suggeito ha sempre funzionato solo che la pagina era nera e quando dal browser accedevo a invio.php la scritta di errore non appariva (sono da ricovero).
Ho messo tutto nel body ed ora è perfetto.
Vi ringrazio immensamente.
-
Grazie pikadilly per aver condiviso la soluzione del problema.
Segnalo come risolto
-
E' lo scopo del forum.:)
Mi dispiace solo di averci messo tanto, è vero che per un pò ho abbandonato il problema usando asp, ma poi mi sono detta che asp mi sta antipatico e che non potevo non capire il punto.
Grazie ancora.