Tbv Google Analytics: na correct uitvoeren form, bedankt htm tonen.

Status
Niet open voor verdere reacties.

sanriet

Nieuwe gebruiker
Lid geworden
25 jan 2011
Berichten
2
Hallo allemaal,

Binnen Google Analytics wil ik een bepaalde URL (bedankt.php) als doel opnemen.
Bedankt.php moet getoond worden als een formulier is ingevuld, op submit is gedrukt, er geen fouten zijn gevonden en een mailtje is gestuurd.
Het formulier zelf, testen of er geen foutieve invoer is en de mailfunctie zitten binnen hetzelfde php-bestand (contact.php).
Misschien dat de oplossing heel eenvoudig is, maar ik kom er niet op. Wat volgens mij niet kan:
  • Tegen Google zeggen dat contact.php het doel is, gaat problemen geven want dan weet je nog niet of daadwerkelijk op submit is gedrukt.
  • een include van bedankt.php, want dan verandert de URL niet.
  • een href, want ik wil niet dat de gebruiker een link moet aanklikken.
Ergens heb ik gezien dat je dit met header("location: bedankt.php") kunt oplossen, maar ik lees ook overal dat je nogal moet uitkijken met het header-commando, omdat dat moet worden verzonden voordat andere gegevens zijn verstuurd. Is de header-functie de juiste manier of zie ik iets over het hoofd?

Alvast hartelijk bedankt voor het meedenken. (En sorry als deze vraag al eerder is gesteld...)
 
Op bedankt.php een stukje Javascript plaatsen, that's it. Je kunt dit op 2 manieren bereiken:

1: je submit het formulier altijd naar bedankt.php en plaatst het stukje Javascript pas als alles goed is. Zou niet mijn voorkeur hebben; mensen zien dan ook 'bedankt.php' als er niks te bedanken is.
2: je stuurt inderdaad een header('location: xyz'); als de afhandeling geslaagd is.

Er is niks gevaarlijks aan dat commando, maar er mag inderdaad geen enkele output vóór het commando komen. Dat is niet moeilijk, op je submit-pagina krijg je deze structuur:

PHP:
<?php

if(x = y){

 // formulier correct:
 header('bedankt');

}else{

 echo 'foutjes';

}

Als je alleen in de 'else' output plaatst, dus NIET al boven het if-statement of in het if-statement zelf, is er niks aan de hand.
 
Hallo SvU,

Hartelijk bedankt voor je snelle reactie!
Helaas werkt het niet: ik krijg de melding "Warning: Cannot modify header information - headers already sent by ..."

Misschien dat uitmaakt dat ik met Wordpress werk? Ik heb het uitgetest in een 'kale' PHP-omgeving en daar kreeg ik deze foutmelding niet.

Is er een andere manier om een bestand te callen, zonder dat je de include gebruikt?
Voor de zekerheid: mijn programma-structuur is als volgt:

Code:
// Contact.php

if (!isset($_POST['submit'])) {
... testen of invoer correct ...
   if (mail(AAN, $onderwerp, $message, $headers)) {
  ...
   [COLOR="red"]hier moet dus naar de bedankt.htm worden gesprongen.
Als ik hier header('location:bedankt.php') opgeef, komt bovenstaande foutmelding.[/COLOR]
   } else {
       echo "<script language=\"javascript\">alert(\"".$melding."\")</script>"; 
   }
}
<form id="info" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> 
...
</form>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan