AIUTO per configurazione file PHP

volodos

Nuovo Utente
1 Set 2006
28
0
0
Ciao a tutti,

ho bisogno di una piccola dritta per un problema che, vista la mia pressochè totale inesperienza, non riesco a risolvere con PHP. Vi chiedo di scaricare questo zip:

www.carhirewithdriver.org/php.zip

contiene all'interno 4 file:

1) contatti.html (il quale punta al file captcha.php)
2) captcha.php
3) captcha_image.php (per la verifica dell'immagine captcha)
4) confcontatti.html (pagina di conferma che compare se tutto è andato a buon fine)

Così come sono i file, inviando il modulo da contatti.html si ottiene SEMPRE la pagina di conferma, anche se l'immagine captcha inserita non è corretta, ne deduco che c'è qualcosa di sbagliato nel captcha.php. Quello che vorrei ottenere in tale file è che, una volta verificata l'esattezza dell'immagine e una volta che l'invio mail dei campi $indirizzo_dest, $oggetto, $informazioni e $header è riuscito, venga mostrata la pagina di conferma confcontatti.html.

C'è qualcosa di sbagliato nella sintassi credo, mi potete aiutare in proposito ?

Grazie infinite
Fabio
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
guarda che cliccandi sul link da pagina inesistente (almeno con li mio bw)
comunque e meglio che posti il codice o alleghi il file zip al post senza farlo richiamera da un sito remoto
 

volodos

Nuovo Utente
1 Set 2006
28
0
0
ciao grazie per la ripsosta, il link ora funziona, avevo sostituito le minuscole con le maiuscole. Ho postato un link perchè non tutti i forum accettano allegati zip....
Il codice del php:


<html>
<head>
<title>Invio richiesta informazioni</title>
</head>
<body>
<?php
//*******************************************************************************************
//***********************************RIGHE DA MODIFICARE*************************************
$oggetto = "Richiesta informazioni"; //L'oggetto con cui vuoi che tiarrivi la mail
$indirizzo_dest ="info@nomedelmiosito.com"; //L'indirizzo di posta a cui arriveranno i messaggi inviati dal form
//***********************NON MODIFICARE NIENTE AL DI SOTTO DI QUESTA RIGA*********************

$header .="From: <".$_POST['email'].">"; //qsta riga serve per fare in modo che $email sia visto cm mittente
$informazioni = $_POST['informazioni']. "

Nome: ".$_POST['nome']."
Azienda: ".$_POST['azienda']."
Città: ".$_POST['citta']."
Nazione: ".$_POST['nazione']."
E-mail: ".$_POST['email']."
Telefono: ".$_POST['telefono']; //seconda parte dell'header

if ($_SERVER["REQUEST_METHOD"] <> "POST")
die("You can only reach this page by posting from the html form");

if ($_POST["captcha_input"] == $_SESSION["pass"]);

if (mail($indirizzo_dest, $oggetto, $informazioni, $header))

{

include 'confcontatti.html';
}
else
{
print("<center><br><br><br><font size='5' color='#FF0000'>Errore invio E-mail, si prega di tornare indietro e riprovare</center></font>");

}

?>
</body>
</html>
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
visto così mi sembrerebbe che manchino delle parentesi graffe di apertura e chiusura if

if ($_SERVER["REQUEST_METHOD"] <> "POST")
die("You can only reach this page by posting from the html form");

if ($_POST["captcha_input"] == $_SESSION["pass"]);{

if (mail($indirizzo_dest, $oggetto, $informazioni, $header))

{

include 'confcontatti.html';
}
else
{
print("<center><br><br><br><font size='5' color='#FF0000'>Errore invio E-mail, si prega di tornare indietro e riprovare</center></font>");

}
}

prova in questa maniera, comunque verifica meglio le parentesi, io per abitudine apro e chiudeo le parentesi prima di scrivere le istruzioni anche sugli if di una sola riga
 

volodos

Nuovo Utente
1 Set 2006
28
0
0
niente da fare, continua a non funzionare il controllo del captcha. Così com'è, posso anche NON inserire l'immagine captcha e l'invio del modulo parte comunque. Qualche altra idea ??
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
io farei una prova
appena prima del if captcha == session
inserirei le righe (poi da commentare o eliminare)

echo "imput capt = ".$_POST["captcha_input"]."<br>";

echo "session capt = ".$_SESSION["pass"]."<br>";

per vedere cosa ti trasmettono dato che ti da sempre l'autorizzazione a spedire e verificare perchè i due valori sono uguali
 

volodos

Nuovo Utente
1 Set 2006
28
0
0
allora, forse è meglio che ti invio sia il codice del mio php originale (quando era SENZA il controllo captcha), sia quello del php dal quale ho preso alcune righe per implementare tale controllo.

PHP originale senza CAPTCHA:

=====================================================

<html>
<head>
<title>Invio richiesta informazioni</title>
</head>
<body>
<?php
//*******************************************************************************************
//***********************************RIGHE DA MODIFICARE*************************************
$oggetto = "Richiesta informazioni"; //L'oggetto con cui vuoi che tiarrivi la mail
$indirizzo_dest ="info@nomedelmiosito.com"; //L'indirizzo di posta a cui arriveranno i messaggi inviati dal form
//***********************NON MODIFICARE NIENTE AL DI SOTTO DI QUESTA RIGA*********************

$header .="From: <".$_GET['email'].">"; //qsta riga serve per fare in modo che $email sia visto cm mittente
$informazioni = $_GET['informazioni']. "

Nome: ".$_GET['nome']."
Azienda: ".$_GET['azienda']."
Città: ".$_GET['citta']."
Nazione: ".$_GET['nazione']."
E-mail: ".$_GET['email']."
Telefono: ".$_GET['telefono']; //seconda parte dell'header

if(mail($indirizzo_dest, $oggetto, $informazioni, $header))

{
include 'confcontatti.html';
}
else
{
print("<center><br><br><br><font size='5' color='#FF0000'>Errore invio E-mail, si prega di tornare indietro e riprovare</center></font>");

}

?>
</body>
</html>


=====================================================


PHP con captcha dal quale ho estrapolato alcune righe per ottenere il mio definitivo che trovi nel post sopra:


<?
// *** The CAPTCHA comparison - http://frikk.tk ***
// *** further modifications - http://www.captcha.biz ***

session_start();

// *** We need to make sure theyre coming from a posted form -
// If not, quit now ***
if ($_SERVER["REQUEST_METHOD"] <> "POST")
die("You can only reach this page by posting from the html form");

// *** The text input will come in through the variable $_POST["captcha_input"],
// while the correct answer is stored in the cookie $_COOKIE["pass"] ***
if ($_POST["captcha_input"] == $_SESSION["pass"])
{
// *** They passed the test! ***
// *** This is where you would post a comment to your database, etc ***
echo "Correct! You have passed the captcha test. <br><br>";
echo "You information input has been sent <br><br>";

echo "This is what you sent <br><br>";


echo "Your Company: \"" . $_POST["company"] . "\" <br>";

echo "Your Name: \"" . $_POST["name"] . "\" <br>";

echo "Your Surname: \"" . $_POST["surname"] . "\" <br>";

echo "Your Address: \"" . $_POST["address"] . "\" <br>";

echo "Your Zip: \"" . $_POST["zip"] . "\" <br>";

echo "Your City: \"" . $_POST["city"] . "\" <br>";

echo "Your Address: \"" . $_POST["address"] . "\" <br>";

echo "Your email: \"" . $_POST["email"] . "\" <br>";


echo "Your Telephone: \"" . $_POST["telephone"] . "\" <br>";

echo "Your Mobile: \"" . $_POST["mobile"] . "\" <br>";

echo "Your Comments: \"" . $_POST["comments"] . "\" <br>";


//sends email via php to the following address
$mailuser = "yourName@yourDomainXYZ123.com";

//echo 'default chosen address: '.$mailuser;

$header = "Return-Path: ".$mailuser."\r\n";
$header .= "From: form with captcha <".$mailuser.">\r\n";
$header .= "Content-Type: text/html;";

$mail_body = '
The User: '.$_POST[company].' has sent his input.
Your Name: '. $_POST[name] . '<br>
Your Surname: '. $_POST[surname] . '<br>
Your Address: '. $_POST[address] . '<br>
Your Zip: '. $_POST[zip] . '<br>
Your City: '. $_POST[city] . '<br>
Your email: '. $_POST . '<br>
Your Telephone: '. $_POST[telephone] . '<br>
Your Mobile: '. $_POST[mobile] . '<br>
Your Comments: '. $_POST[comments] . '<br>'
;
mail ($mailuser, 'Form sent', $mail_body, $header);
echo 'THANKS ';


} else {
// *** The input text did not match the stored text, so they failed ***
// *** You would probably not want to include the correct answer, but
// unless someone is trying on purpose to circumvent you specifically,
// its not a big deal. If someone is trying to circumvent you, then
// you should probably use a more secure way besides storing the
// info in a cookie that always has the same name! :) ***
echo "Sorry, you did not pass the CAPTCHA test.<br><br>";
echo "You said " . $_POST["captcha_input"];
echo " while the correct answer was " . $_SESSION["pass"];

echo " - Please click back in your browser and try again <br><br>";

}
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
un piccolo dubbio
nella pagina hai inserito come primISSIMA istruzione

session_start();

o megio ancora

if(!isset($_SESSION)){
session_start ();
}

altrimenti non ti trasmette $_SESSION
prova e sappimi dire
 

volodos

Nuovo Utente
1 Set 2006
28
0
0
niente da fare, il controllo captcha non funziona ancora. Ho provato con entrambe le soluzioni da te proposte nell'ultimo post, non va.
La stringa l'ho inserita come qui sotto:

<html>
<head>
<title>Invio richiesta informazioni</title>
</head>
<body>
<?php
session_start();
//*******************************************************************************************
//***********************************RIGHE DA MODIFICARE*************************************
$oggetto = "Richiesta informazioni"; //L'oggetto con cui vuoi che tiarrivi la mail
$indirizzo_dest ="info@nomedelmiosito.com"; //L'indirizzo di posta a cui arriveranno i messaggi inviati dal form
//***********************NON MODIFICARE NIENTE AL DI SOTTO DI QUESTA RIGA*********************


ecc..............
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
non dove l'hai messa tu ma

PHP:
<?php session_start(); ?>

<html>
<head>
<title>Invio richiesta informazioni</title>
</head>
<body>
eccetera.......
e poi è meglio comunque che tu utilizzi l'if
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
scusa, ma hai guardato con echo cosa ti tramette $_SESSION["pass"] e $_POST["captcha_input"] ? perchè l'errore può essere a monte dell'if

in quanto se fai la verifica con l'if e invii l'email qualsiasi numero/lettera di capt vuol dire che l'errore è a monte, o nel form (dove richiedi di digitare il codice) o nello script di capt, comunqe se hai un

if($_post['pinco'] == $_session['caio']{
echo "pinco e caio sono uguali";
}else{
echo "pinco e caio sono diversi";
}

e indipendentemente da quello chi inputi risulta sempre che 'pinco' = a 'caio', l'errore non è nell'if ma a monte, per il calcolo delle probabilità dati gli infiniti valori che possono assumere, l'unica possibilità che siano sempre uguali è che

$_post['pinco'] = stringa vuota
$_session['caio'] = stringa vuota

quindi l'errore come detto è a monte
fammi sapere
ciao
 

volodos

Nuovo Utente
1 Set 2006
28
0
0
mi trasmette:

input capt =
session capt = 8cd7a

8cd7a era il codice captcha da inserire, non l'ho inserito e l'invio è avvenuto cmq...
 

volodos

Nuovo Utente
1 Set 2006
28
0
0
se hai un server dove poter caricare i file, è più semplice se scarichi il mio zip e provi tu stesso...se la cosa non ti porta via troppo tempo ovviamente...sono sicuro che è una cavolata, magari una parentesi che manca da qualche parte, ma vai a capire dove....! Grazie in ogni caso per l'aiuto che mi stai dando....
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
immagino che nel form tu abbia un pulsante submit.

elimina

if ($_SERVER["REQUEST_METHOD"] <> "POST")
die("You can only reach this page by posting from the html form");
perchè (immagino) nel form avrai metod="post" se non l'hai metticelo

e sostituisci li tutto con

is($_POST['nome_submit']{
if ($_POST['captcha_input'] == $_SESSION['pass']);{
//tutto quello che ti serve per l'email
if(mail($indirizzo_dest, $oggetto, $informazioni, $header))
{
include 'confcontatti.html';
}//email inviata
else{//errore nell'invio
print("<center><br><br><br><font size='5' color='#FF0000'>
Errore invio E-mail, si prega di tornare indietro e .../center></font>");
}//fine if else invio
}else{//non iserito codice o errato
echo "non hai inserito il codice di sicurezza
}//fine verifica codice
}//fine if dato l'invio

resisti, a forza di provare si arriva alla fine:fonzie:
 

satifal

Utente Attivo
25 Set 2008
522
13
0
Roma
Da captcha.php contenuto nel file php.zip togli il punto e virgola ;
Non è necessario inserire parentesi graffe:

PHP:
if ($_POST["captcha_input"] == $_SESSION["pass"]);
diventa:

PHP:
if ($_POST["captcha_input"] == $_SESSION["pass"])
 

volodos

Nuovo Utente
1 Set 2006
28
0
0
CI SIAMO QUASI ! Allora togliendoil punto e virgola, mettendo il codice giusto l'invio avviene correttamente, mettendo il codice sbagliato compare una pagina tutta bianca con niente dentro
 
Ultima modifica: