een vraagje over de werking van PHP

Status
Niet open voor verdere reacties.

bartcrom

Gebruiker
Lid geworden
11 jul 2012
Berichten
9
Hallo iedereen,

Ik heb een vraagje over php. Ik ben begonnen hoe je met php moet werken. Ik heb een phpscript gemaakt voor een contactformilier dat ik in een website zou willen plaatsen. Ik heb eerst de form gemaakt( het design) en dan ben ik aan het script begonnen. Ik denk dat het script compleet is. Maar ik ben nog geen echte kenner. Nu bij dreamweaver heb ik bij method post genomen en dan bij link de phpscript (aparte file) . Maar als ik het test krijg ik in mijn browser bijna volledig het script. Maar niet de form zelf. Moet je het phpscript in het htmlfile waar de form is ingebouwd plakken onder de doctype? Of ben ik juist dat ik het in een aparte file opsla? Of misschien ligt het aan iets anders? Hopelijk kan er iemand mij helpen. Hier is alvast het script

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><?php
if(isset($_POST['email'])) {


$email_to = "bart.cromphout@rpmnv.be";
$email_subject = "new mail";


function died($error) {

echo "onze verontschuldigingen, er is een fout opgetreden!. ";
echo "These errors appear below.<br /><br />";
echo $error."<br /><br />";
echo "gelieve terug te gaan en de fouten herstellen.<br /><br />";
die();
}


if(!isset($_POST['voornaam']) ||
!isset($_POST['naam']) ||
!isset($_POST['email']) ||
!isset($_POST['telefoon']) ||
!isset($_POST['commentaar'])) {
died('onze verontschuldigingen, er is een fout opgetreden!.');
}

$first_name = $_POST['voornaam']; // required
$last_name = $_POST['naam']; // required
$email_from = $_POST['email']; // required
$telephone = $_POST['telefoon']; // not required
$comments = $_POST['commentaar']; // required

$error_message = "";
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
if(!preg_match($email_exp,$email_from)) {
$error_message .= 'het emailadres die u ingaf is niet geldig.<br />';
}
$string_exp = "/^[A-Za-z .'-]+$/";
if(!preg_match($string_exp,$voornaam)) {
$error_message .= 'de voornaam die u ingaf is niet geldig.<br />';
}
if(!preg_match($string_exp,$naam)) {
$error_message .= 'de familienaam die u ingaf is niet geldig.<br />';
}
if(strlen($commentaar) < 2) {
$error_message .= 'de commentaar die u ingaf is niet geldig.<br />';
}
if(strlen($error_message) > 0) {
died($error_message);
}
$email_message = "Form details below.\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 .= "naam: ".clean_string($last_name)."\n";
$email_message .= "Email: ".clean_string($email_from)."\n";
$email_message .= "Telefoon: ".clean_string($telephone)."\n";
$email_message .= "Commentaar: ".clean_string($comments)."\n";



$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
?>

Dank u! Wij hebben jullie aanvraag goed ontvangen. Wij nemen zo snel mogelijk contact met u op.

<?php
}
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"
/>
<title>Untitled Document</title>
</head>

<body>
</body>
</html>


Alvast bedankt voor het helpen!!

Als er iemand iets wil veranderen aan het script, dan mag dat gerust. Maar laat het weten wat je hebt veranderd en waarom. Dan kan ik verder bijleren:)

Groeten
Bart
 
Hallo Bart

Een kleine tip: plaats tekst (alinea's) altijd - waar dan ook - tussen < p > ... < /p >
Zo weten SEO's dat het om tekst gaat, waardoor je beter wordt weergegeven in zoekmachines.
 
Laatst bewerkt:
1) Die php code wil tekst op de site weergeven en hoort dus niet tussen de <head> maar tussen de <body> tags thuis.
2) Je moet de code opslaan in een php bestand, geen html, anders weet de server niet dat hij naar php code moet zoeken en wordt je code dus gewoon als tekst weergegeven.

NB: Als je code op het forum post altijd tussen [code*] [/code*] (*weghalen) tags plaatsen. Waarbij je "code" kan vervangen door html of php.
 
Als ik de phpscript dan tussen de bodytag plaats. Is dat dan in dezelfde pagina waar de htmlcode en csscode staat van de form zelf? of moet dat apart?
 
hm, ik ben ook geen expert maar voor zover ik kan zien moet dat gewoon in hetzelfde bestand kunnen.

En alsjeblieft, gebruik die [php*] [/php*] (* weghalen) tags nou, dat maakt code op een forum zoveel leesbaarder.
 
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><?php
if(isset($_POST['email'])) {


$email_to = "bart.cromphout@rpmnv.be";
$email_subject = "new mail";


function died($error) {

echo "onze verontschuldigingen, er is een fout opgetreden!. ";
echo "These errors appear below.<br /><br />";
echo $error."<br /><br />";
echo "gelieve terug te gaan en de fouten herstellen.<br /><br />";
die();
}


if(!isset($_POST['voornaam']) ||
!isset($_POST['naam']) ||
!isset($_POST['email']) ||
!isset($_POST['telefoon']) ||
!isset($_POST['commentaar'])) {
died('onze verontschuldigingen, er is een fout opgetreden!.');
}

$first_name = $_POST['voornaam']; // required
$last_name = $_POST['naam']; // required
$email_from = $_POST['email']; // required
$telephone = $_POST['telefoon']; // not required
$comments = $_POST['commentaar']; // required

$error_message = "";
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
if(!preg_match($email_exp,$email_from)) {
$error_message .= 'het emailadres die u ingaf is niet geldig.<br />';
}
$string_exp = "/^[A-Za-z .'-]+$/";
if(!preg_match($string_exp,$voornaam)) {
$error_message .= 'de voornaam die u ingaf is niet geldig.<br />';
}
if(!preg_match($string_exp,$naam)) {
$error_message .= 'de familienaam die u ingaf is niet geldig.<br />';
}
if(strlen($commentaar) < 2) {
$error_message .= 'de commentaar die u ingaf is niet geldig.<br />';
}
if(strlen($error_message) > 0) {
died($error_message);
}
$email_message = "Form details below.\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 .= "naam: ".clean_string($last_name)."\n";
$email_message .= "Email: ".clean_string($email_from)."\n";
$email_message .= "Telefoon: ".clean_string($telephone)."\n";
$email_message .= "Commentaar: ".clean_string($comments)."\n";



$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
?>

Dank u! Wij hebben jullie aanvraag goed ontvangen. Wij nemen zo snel mogelijk contact met u op.

<?php
}
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"
/>
<title>Untitled Document</title>
</head>

<body>
</body>
</html>

:)

sorry hiervoor
 
Dus als ik het goed begrijp. in de htmlpagina van de form, het script in de bodytag plaatsen en opslaan als php. Maar moet ik dan nog het script in een aparte phppagina invoegen (in de bodytag), opslaan en de link trekken tussen de form en de phppagina?
 
Als je in het formulier de het action gedeelte leeg laat (action="" dus) dan wordt de inhoud van het formulier verstuurd naar de php pagina waar het formulier zelf in staat. Het formulier en de php code om de inhoud ervan af te handelen kunnen dan dus in hetzelfde php bestand staan.
 
Ik heb het gisteren uitgetest, maar het werkt nog steeds niet. Iemand vertelde mij dat het kan zijn dat de provider php niet ondersteunt. Ik heb een form eens uitgeprobeerd zonder php, maar als je die test komt er steeds een balk waar je moet kiezen tussen gmail of yahoo om de form te verzenden. Maar wat als iemand hotmail gebruikt? Dan kan die persoon het form niet verzenden. Hoe kan je dat oplossen?
 
Wat is je provider dan? (en wat is dat voor formulier dat je daarna hebt uitgeprobeerd?)
 
Mijn provider is telenet. De form die ik heb geprobeerd is de form dat gelinkt aan een e-mailadres. Maar als ik die uitest via DW krijg ik een keuzemenu waar je moet kiezen met welk e-mailprogramma dat je de form wilt verzenden. Gmail, Yahoo of een ander en dat is dan outlook. Maar wat als er gebruikers Hotmail gebruiken? Is dit aan te passen?
 
Mijn provider is telenet. De form die ik heb geprobeerd is de form dat gelinkt aan een e-mailadres. Maar als ik die uitest via DW krijg ik een keuzemenu waar je moet kiezen met welk e-mailprogramma dat je de form wilt verzenden. Gmail, Yahoo of een ander en dat is dan outlook. Maar wat als er gebruikers Hotmail gebruiken? Is dit aan te passen?
Ah, telenent lijkt inderdaad geen PHP te ondersteunen, dat geldt meestal voor de gratis webruimte die je van je internetprovider krijgt. Zou je de code van dat formulier kunnen geven? Als dat gewoon een standaard formulier is met als action mailto:jouw@mailadres.be, dan is het inderdaad geen bijzonder betrouwbare methode. Je kunt dan haast beter gewoon je mailadres op de site zetten, of natuurlijk op zoek gaan naar een webhostng provider die wel PHP ondersteuning biedt (dat doen ze gelukkig zo'n beetje allemaal).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan