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:
Tutto il body delle pagine del sito è racchiuso tra: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>
E nell'index.html all'interno del body c'è:codice:<div id="inner_frame"> </div>
E sempre nell'index è presente per defaul un iframe che contiene la pagina home.php.codice:<div id="main_div"> </div>
Nella pagina contatti ho il form per l'invio delle mail che viene incluso tramite comando php:
modulocontatti.php inizia concodice:<?php include('modulocontatti.php'); ?>
Poi ci sono i vari elementi del form e al link "invia" è associato il comandocodice:<?php require_once('invia.php'); ?>
La pagina invia.php per semplicità e per verificare il funzionamento è essenzialmente questa:codice:onClick:"document.getElementById('form').submit()"
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.codice:<?php if($_POST) { if($_POST['txt_captcha']!="") { if($_POST['txt_captcha']==$_SESSION['session_captchaText']) { echo("Sei umano"); } else { echo("sei un bot"); } } } ?>
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!

Rispondi quotando