Ik zoek het commando om nadat het PHP script is verwerkt en verstuurd naar de homepage te gaan, maar dan buiten het iFrame, de PHP verwerking vind namelijk plaats in een iFrame, maar wil graag dat men daarna vanzelf naar een pagina gaat buiten het iframe.

Zoals ik het nu heb (zie onderstaand) doet hij het wel, maar blijft hij in het iFrame en geeft de pagina weer die ik intoets, hoe nu compleet nieuw...?


/ create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
header ('Location: http://www.mijndomeinnaam.nl';);

Gr. Richard
top.window.location.href = "www.phphulp.nl"

[size=xsmall]Toevoeging op 01/08/2012 15:40:49:[/size]

javascript dus, gaat niet met headers
@Ger, oke, bedankt, maar van javascript heb ik helemaal geen verstand, in mijn PHP script hoopte ik op een commando dat hij uit het iFrame gaat, om nu weer een heel javascript erin te zetten.... heb ik geen verstand van. Maar bedankt voor je input.

Heb hem nu zover dat hij terug gaat en het formulier leeg laat zien, weet alleen niet hoe ik de onderste tekst een beetje mooi kan krijgen met bijvoorbeeld een spatie en/of een return ertussen etc. (zie script totaal hieronder):
<?php

#**********************************************
# Contact Formulier
#**********************************************

if(isset($_POST['email'])) {

// Pas deze twee regels aan.
$email_to = "xxxxxxxxxxxxx.nl";
$email_subject = "Bericht van een bezoeker";


function died($error) {
// je foutbericht staat hier
echo "Het spijt ons, vanwege een fout is het formulier niet verzonden. ";
echo "Deze fout(en) tonen zich hieronder.<br /><br />";
echo $error."<br /><br />";
echo "Ga aub terug om de velden correct in te vullen.<br /><br />";
die();
}

// validation expected data exists
if(!isset($_POST['first_name']) ||
!isset($_POST['last_name']) ||
!isset($_POST['email']) ||
!isset($_POST['telephone']) ||
!isset($_POST['comments'])) {
died('Het spijt ons, er is een probleem opgetredn bij het verzenden van het formulier.');
}

$first_name = $_POST['first_name']; // verplicht
$last_name = $_POST['last_name']; // verplicht
$email_from = $_POST['email']; // verplicht
$telephone = $_POST['telephone']; // niet verplicht
$comments = $_POST['comments']; // verplicht

$error_message = "";
$email_exp = "^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$";
if(!eregi($email_exp,$email_from)) {
$error_message .= 'Het emailadres is niet geldig.<br />';
}
$string_exp = "^[a-z .'-]+$";
if(!eregi($string_exp,$first_name)) {
$error_message .= 'De voornaam is niet geldig.<br />';
}
if(!eregi($string_exp,$last_name)) {
$error_message .= 'De achternaam is niet geldig.<br />';
}
if(strlen($comments) < 2) {
$error_message .= 'Het bericht is niet geldig.<br />';
}
$string_exp = "^[0-9 .-]+$";
if(!eregi($string_exp,$telephone)) {
$error_message .= 'Het telefoonnummer is niet geldig.<br />';
}
if(strlen($error_message) > 0) {
died($error_message);
}
$email_message = "Gegevens formulier.\n\n";

function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}

$email_message .= "Voornaam: ".clean_string($first_name)."\n";
$email_message .= "Achternaam: ".clean_string($last_name)."\n";
$email_message .= "Email: ".clean_string($email_from)."\n";
$email_message .= "Telefoon: ".clean_string($telephone)."\n";
$email_message .= "Bericht: ".clean_string($comments)."\n";


// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
header ("Refresh: 2; URL=page2.html");

<!-- Creeer je eigen succes pagina hier -->

Bedankt voor uw bericht. U krijgt zo spoedig mogelijk een reactie.

U keert vanzelf terug naar homepage
<?
}
?>
Vanuit een form kan je een target atribuut meegeven, dwz:

<form ...... target="_top">

Waarom gebruik van Iframe??

eregi is verouderd/vervallen.
Waarom regel 32-36 (kopiƫren van variabelen)?
Onderdruk geen foutmelingen (@) maar voorkom ze / handel ze netjes af (en 'die' is dat niet!).
Gebruik in php bij voorkeur ', zodat je in HTML " probleemloos kunt gebruiken.

Om een mooie melding onderaan te krijgen: html in combinatie met css.
@Ger, ik heb het formulier apart staan van de PHP file (door omstandigheden van het webprogramma), heb nu met een commando <br> een spatie tussen de regels gekregen en met een wat langere refresh gaat hij terug naar een leeg contact formulier.

Dus de bezoeker kan nu rustig lezen:

Het bericht is verzonden...!<br>
<br>
Wij nemen zo spoedig mogelijk contact met u op....!<br>
<br>
U keert vanzelf terug naar de contactpagina.

En maar wachten tot er een commando is in PHP om een refresh uit het iFrame te krijgen.

Gr. Richard

[size=xsmall]Toevoeging op 01/08/2012 16:25:34:[/size]

@Obelix, ik weet dat alles bijna oud is en vervallen, maar het werkt bij mij goed en zodra ik geld heb laat ik wel een goed script schrijven, zit in de WW dus heb geen legende gelden en probeer zo er toch iets van te maken, sorry.... Moet het maar even met een ouwetje doen voordat ik een nieuwe kan kopen. gr. Richard
Oud en vervallen. Je steekt daar nu (veel) tijd in om het (rammelend) aan elkaar te knopen. Met het risico dat het (op korte termijn) niet meer gaat werken. Kun je er weer (veel) tijd en energie in steken. Waarom dan niet nu die tijd investeren om het in 1x goed te doen?

HTML, CSS en PHP leer je niet van vandaag op morgen.
Er zijn programma's die lijken praktisch vanwege het 'what you see is (hopefully) what you get' idee. Vaak leveren ze echter een hele zooi onnodige code en, als iets even niet werkt, heb je geen idee waarom.
Gun jezelf de tijd en verdiep je in HTML, CSS en PHP.
En heb je vragen: stel ze dan gerust. :)
Oud ja, vervallen nee. Je kunt met AJAX geen files uploaden dus ben je aan een 'fake' iframe gebonden. Lijkt mij niet iets wat op korte termijn gaat vervallen.

@Richard,
Er bestaat geen functie/commando in PHP om uit een iframe te geraken, je kan echter wel via wat workarounds er terug in komen.
@Obelix en Ger, Oke, het enige wat ik wil is een script voor een formulier wat veilig is en niet te "oud" files uploaden etc. hoef ik niet, ik maak een formulier met mij programma en het enige wat ik wil is de basis dingen erin hebben, voornaam, achternaam, etc. en dat hij het bericht checkt op aantal tekens, dit script doet dit wat ik wil wel aardig, dus al iemand mij kan helpen om hem te herschrijven zodat de beveiliging en check zaken kloppen ben ik al blij. Heb al veel keren geprobeerd om formmail te gebruiken, maar dit werkt niet op mijn NAS thuis, daar draait de website en roundcubemail van Synology. Kan nu wel tegen iemand zeggen maak een script, maar als ik daar de ballen niet van snap en moet veel geld betalen heb ik helemaal niets.

Het laaste script wat ik heb gepost in deze topic doet het wel naar mijn zin, kan ik hem verbeteren op het gebied van eregi, wat is momenteel het beste, ga ik weer googelen...?
Ben niet bekend met het draaien van een website op een NAS.

Draait daar, probleemloos, een website (html, php) op?
Een NAS is gewoon een opslag medium dus daar kan je weinig op draaien.
ereg* functies kan je beter vervangen door preg_* functies omdat de eerste in PHP 5.3+ niet meer gaan werken.

Even terugkomend op jouw iframes:
Als je die toch wilt gebruiken dan neem ik aan dat je homepage ook in een iframe staat, zoniet dan doe je iets niet goed.

Reageren