Ciao, ho un problema un po' intricato che coinvolge non solo php, ma anche un po' Javascript.
Mi sono trovato a dover lavorare con un lavoro già fatto al quale devo apportare una modifica: aggiungere
il controllo captcha al form di invio mail.
Tutte le pagine del sito tranne index.html hanno al loro nell'header questo script che permette di inserire le pagine all'interno di un frame della pagina index:
codice:
<script type="text/javascript" language="javascript">
function load_content () {
if (parent.document.getElementById('main_div'))
{
parent.document.getElementById('main_div').innerHTML=document.getElementById('inner_frame').innerHTML;
}
if (!parent.document.getElementById('main_div'))
{
window.location=('index.html') ;
}
}
</script>
Tutto il body delle pagine del sito è racchiuso tra:
codice:
<div id="inner_frame">
</div>
E nell'index.html all'interno del body c'è:
codice:
<div id="main_div">
</div>
E sempre nell'index è presente per defaul un iframe che contiene la pagina home.php.
Nella pagina contatti ho il form per l'invio delle mail che viene incluso tramite comando php:
codice:
<?php include('modulocontatti.php'); ?>
modulocontatti.php inizia con
codice:
<?php
require_once('invia.php');
?>
Poi ci sono i vari elementi del form e al link "invia" è associato il comando
codice:
onClick:"document.getElementById('form').submit()"
La pagina invia.php per semplicità e per verificare il funzionamento è essenzialmente questa:
codice:
<?php
if($_POST)
{
if($_POST['txt_captcha']!="")
{
if($_POST['txt_captcha']==$_SESSION['session_captchaText'])
{
echo("Sei umano");
}
else
{
echo("sei un bot");
}
}
}
?>
Ora il problema, se carico la pagina contatti.php senza la funzione load_content() la pagina si carica in tutta la sua totalità e se provo a scrivere il codice del captcha e a premere Invia mi ricarica la pagina contatti.php mostrandomi il messaggio di feedback.
Se invece carico la pagina contatti.php con la funzione load_content() attiva, me la integra all'interno di index.html, quando però premo Invia la pagina contatti non si ricarica ma si ricarica la index con all'interno home.php, quindi non ricevo il messaggio di feedback e, se ci fosse stato il codice per l'invio di mail, non sarebbe stato eseguito.
Secondo me potevo risolvere il problema facendo in modo che quando schiaccio Invia mi ricaricasse solo modulocontatti.php che ho inserito con l'include, secondo voi è fattibile? Ci sono altri metodi più pratici che mi consigliate?
Grazie in anticipo!