php script importeren

Status
Niet open voor verdere reacties.

marloes72

Gebruiker
Lid geworden
23 apr 2007
Berichten
333
De website die ik voor mijn zus gemaakt heb (www.athenakeramiek.nl) staat op haar webruimte bij Tiscali. De formulieren staan echter op mijn hostserver, omdat die lopen via een php script, dat niet ondersteund wordt op haar webruimte. Dat is lastig omdat ik daardoor met twee verschillende sjablonen moet werken. Het liefst zou ik gewoon alle pagina's, dus ook die met formulieren, op haar eigen webruimte zetten, zodat ik overal dezelfde sjabloon in kan gebruiken. Ik heb begrepen dat het mogelijk is om het script op mijn hostservice te laten draaien en het te importeren in de website. Ik heb nog niet zo veel ervaring met het maken van websites. Ik heb gezocht via Google naar 'php include'. Maar hoe dat met scripts werkt krijg ik niet duidelijk. Kan iemand me verder helpen?
 
Volgens mij kan het veel makkelijker...

Jij hebt op jouw server een PHP-script staan welke het formulier dat op jouw pagina staat uitvoert.

Ik denk dat je ook wel het formulier op de site van je zus kan zetten en dan gewoon in het <form>-gedeelte dit zet:
HTML:
<form action="http://www.mmzone.nl/athenakeramiek/dodosmail.php" method="post">

Zoek anders eens naar een iframe mocht dit niet werken.
 
Dank je wel! Ik ga het proberen.

Ik had ook al aan een IFrame gedacht. Maar ik ben bang dat dit niet gaat lukken. Het script raakte al in de war toen de domeinnaam bleef staan in de browser. Dat heb ik moeten veranderen. Als ik het formulier in de website binnen haal met een IFrame, staat er natuurlijk ook een andere naam in de browser. Maar misschien is dat anders....?
 
DIT WERKT ALS EEN TREIN! Ik had niet gedacht dat het zó simpel zou zijn! Ik dacht dat een script in principe altijd op dezelfde server moest staan, maar......niet dus...... Je hebt me hier ontzettend mee geholpen! Nogmaals, bedankt!
 
Laatst bewerkt:
Have fun :)

Zou je de status op "opgelost" willen zetten rechtsonder? Alvast bedankt ;)
 
Deze oplossing blijkt toch wat te haperen. Ik heb nu alle formulieren op de webruimte van mijn zus gezet en dus in de actie en de spambeveiliging verwezen naar mijn server. Maar de spambeveiliging hapert nu. Vaak krijg je de mededeling dat je de tekst niet goed ingetypt hebt, terwijl het WEL goed was. Kan ik daar iets aan doen? Is een andere manier van importeren misschien toch beter? Zijn er suggesties?
 
Volgens mij moet een iframe geen problemen opleveren :(
 
Als ik het formulier binnen haal vanaf mijn server in een Iframe werkt het script niet. Je komt dan niet door de spambeveiliging heen. Als ik verwijs in de htm van het formulier en dit gewoon op de de server van mijn zus zet (zoals je in eerste instantie aanraadde), kom je uiteindelijk wel er doorheen, meestal de tweede keer. Dat werkt beter dus, maar niet optimaal. Hoe kan ik dit oplossen?
 
Zou je de inhoud van dodosmail.php hier kunnen/willen plaatsen tussen
PHP:
...
?
 
Ja hoor, dat kan. Het mailadres heb ik alleen even weg gehaald......

PHP:
<?
$your_email_address="";

if(empty($_GET) && empty($_POST)) {
	die('Please do not access this file directly. Visit <a href="http://regretless.com/scripts/" target="_blank">dodo\'s scripts collection</a> for more information!');
}

// emular register_globals on
if (!ini_get('register_globals')) {
	$superglobales = array($_SERVER, $_ENV, $_FILES, $_COOKIE, $_POST, $_GET);
	if (isset($_SESSION)) {
		array_unshift($superglobales, $_SESSION);
	}
	foreach ($superglobales as $superglobal) {
		extract($superglobal, EXTR_SKIP);
	}
}

// to prevent header injection
if (eregi("\r",$_POST['your_email_address']) || eregi("\n",$_POST['your_email_address'])){
     exit('Please do not exploit this file. Visit <a href="http://regretless.com/scripts/" target="_blank">dodo\'s scripts collection</a> for more information!');
}

// clean & test exploits
foreach ($_POST as $key => $val) {
	if(is_string($val)) {
		$c[$key] = clean($val);
		testExploit($val);
	} else if(is_array($val)) {
		foreach($val as $vKey => $vVal) {
			$c[$key][$vKey] = clean($vVal);
			testExploit($vVal);
		}
	}
}

$fields = array_keys($c);

// protect the variable $reserved_vars
if(isset($reserved_vars)) {
	unset($reserved_vars);
}
$reserved_vars = array("css_file", "background_color", "background_image", "text_color", "link_color", "visited_link_color", "active_link_color", "font_name", "font_size", "highlight_color", "required_fields", "after_url", "check_email_address", "subject", "your_email_address", "env_report", "owner_name", "autoresponse", "response_subject", "response_mail", "dodosmail_header_file", "dodosmail_footer_file", "use_dodos_captcha", "use_dodos_captcha_typed");

// checking required fields
// in case they used comma and space, replace
if(strstr($required_fields, ", ")) {
	$required_fields = str_replace(", ", ",", $required_fields);
} else {
	$required_fields = $required_fields;
}
$required_fields = explode(",", $required_fields);

for($i = 0; $i < count($required_fields); $i++) {
	$required_var_name = $required_fields[$i];
	if(empty($$required_var_name)) {
		include_dodosmail_header($dodosmail_header_file);
		echo "<p class=\"DodosMailError\">DodosMail Error - Het verplichte veld <strong><u>".dodosmail_error_handle($required_var_name)."</strong></u> is niet ingevuld.\n";
		echo "<br /><br /><a href=\"javascript:history.back(1)\">Terug</a>\n";
		echo "</p>\n";
		include_dodosmail_footer($dodosmail_footer_file);
		exit;
	}
}
if($check_email_address == "yes" && !empty($email)) {
	if(!check_email($email)) {
		include_dodosmail_header($dodosmail_header_file);
		echo "<p class=\"DodosMailError\">DodosMail Error - Het ingevulde <strong><u>email</strong></u>adres (".dodosmail_error_handle($email).") is niet geldig.\n";
		echo "<br /><br /><a href=\"javascript:history.back(1)\">Terug</a>\n";
		echo "</p>\n";
		include_dodosmail_footer($dodosmail_footer_file);
		exit;
	}
}
if($use_dodos_captcha == "yes" && !dodoscaptcha_verify($use_dodos_captcha_typed)) {
	include_dodosmail_header($dodosmail_header_file);
	echo "<p class=\"DodosMailError\">DodosMail Error - De ingevulde <strong><u>spam beveiliging</strong></u> tekst (".dodosmail_error_handle($use_dodos_captcha_typed).") komt niet overeen met de tekst op de getoonde afbeelding.\n";
	echo "<br /><br /><a href=\"javascript:history.back(1)\">Terug</a>\n";
	echo "</p>\n";
	include_dodosmail_footer($dodosmail_footer_file);
	exit;
}


for($i = 0; $i < count($fields); $i++) {
	$actual_var = $fields[$i];
	if(in_array($actual_var, $reserved_vars)) {
		$inside_mail = $inside_mail;
	} else {
		if(is_array($$actual_var)) {
			$inside_mail.= "$actual_var: ";
			foreach($$actual_var as $actual_val) {
				$inside_mail.= "$actual_val ";
			}
			$inside_mail.= "\n";
		} else {
			$actual_val = stripslashes($$actual_var);
			$inside_mail.= "$actual_var: $actual_val\n";
		}
	}
}

// getting other information from the form
$cname = gethostbyaddr($_SERVER[REMOTE_ADDR]);
$inside_mail.=
"
-----------------------------------------------------------------------
 SENDER INFO:
 IP: $_SERVER[REMOTE_ADDR]
 Computer Name: $cname
 Browser Type: $_SERVER[HTTP_USER_AGENT]
 Page Referer: $_SERVER[HTTP_REFERER]
-----------------------------------------------------------------------
 Powered by DodosMail 2.5
 http://regretless.com/scripts
";






$headers .= "MIME-Version: 1.0\n";
$headers .= "X-Priority: 3\n";
$headers .= "X-MSMail-Priority: Normal\n";
$headers .= "X-Mailer: DodosMail 2.5 http://regretless.com/scripts/\n";
$headers .= "Content-type: text/plain; charset=\"iso-8859-1\"\n";
$headers .= "From: $name <$email>\n";
$headers .= "Reply-To: $name <$email>\n";


$success = mail($your_email_address, $subject, $inside_mail, $headers);
if($success) {
	if($autoresponse == "yes") {
		$response_subject = stripslashes($response_subject);
		$response_mail = stripslashes($response_mail);
		mail($email, $response_subject, $response_mail, "From: $owner_name <$your_email_address>");
	}
	if($after_url == "") {
		// out put send info
		include_dodosmail_header($dodosmail_header_file);


		echo "<p>\n";
		
		echo "The following email has been sent successfully!</p><ul>";
		for($i = 0; $i < count($fields); $i++) {
			$actual_var = $fields[$i];
			if(in_array($actual_var, $reserved_vars))
				echo "";
			else {
				if(is_array($$actual_var)) {
					echo "<li>$actual_var: ";
					foreach($$actual_var as $actual_val) {
						echo "$actual_val ";
					}
					echo "</li>\n";
				} else {
					$actual_val = stripslashes($$actual_var);
					echo "<li>$actual_var: $actual_val</li>\n";
				}
			}
		}
		echo "</ul>\n<p><a href=\"http://regretless.com/scripts/\">DodosMail</a> v2.5</p>";
		include_dodosmail_footer($dodosmail_footer_file);
		exit;
	} else {
		headfunction($after_url);
	}
} else {
	include_dodosmail_header($dodosmail_header_file);
	echo "<p class=\"DodosMailError\">DodosMail Error - the owner's server is experiencing techinical difficulties. Please email use ".dodosmail_error_handle($your_email_address)." to send your email.\n";
	echo "<br /><br /><a href=\"javascript:history.back(1)\">Back</a>\n";
	echo "</p>\n";
	include_dodosmail_footer($dodosmail_footer_file);
	exit;
}








/*****************************************************************************
/* Layout related functions
*****************************************************************************/
function include_dodosmail_header($dodosmail_header_file) {
	global $reserved_vars;
	foreach($reserved_vars as $reserved_var) {
		global $$reserved_var;
	}

	if(is_file($dodosmail_header_file)) {
		include_once($dodosmail_header_file);
		return;
	} else {
		echo "<html>\n";
		echo "<head>\n";
		echo "<title>\n";
		echo "DodosMail\n";
		echo "</title>\n";
		if($css_file != "")
			echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"$css_file\">\n";
		echo "</head>\n";
		echo "<body bgcolor=\"$background_color\" background=\"$background_image\" text=\"$text_color\" link=\"$link_color\" vlink=\"$visited_link_color\" alink=\"$active_link_color\">\n";
		echo "<font face=\"$font_name\" size=\"$font_size\">\n";
	}
}

function include_dodosmail_footer($dodosmail_footer_file) {
	global $reserved_vars;
	foreach($reserved_vars as $reserved_var) {
		global $$reserved_var;
	}
	if(is_file($dodosmail_footer_file)) {
		include_once($dodosmail_footer_file);
		return;
	} else {
		echo "</font>\n</body>\n</html>";
	}
}

function dodosmail_error_handle($msg) {
	global $highlight_color;
	if(isset($highlight_color)) {
		$extra_begin = "<font color=\"".$highlight_color."\">";
		$extra_end = "</font>";
	} else {
		$extra_begin = "<span class=\"DodosMailErrorHighLight\">";
		$extra_end = "</span>";
	}

	return $extra_begin.$msg.$extra_end;
}

function headfunction($url) {
	header ("Location: $url");
}


/*****************************************************************************
/* Other functions
*****************************************************************************/

function clean($data) {
	$data = stripslashes($data);
	$data = strip_tags($data);
	$data = trim(htmlspecialchars($data));
	return $data;
}

function testExploit($var) {
	$exploits = "/(content-type|bcc:|cc:|document.cookie|onclick|onload|mime-version:|content-transfer-encoding:)/i";
	if(preg_match($exploits, $var)) {
		exit('Please do not exploit this file. Visit <a href="http://regretless.com/scripts/" target="_blank">dodo\'s scripts collection</a> for more information!');
	}
}

function check_email($email) {
	if( (preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $email)) ||
		(preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$email)) ) {
		return true;
	}
	return false;
}

function dodoscaptcha_verify($typed) {
	session_start();
	$ans = false;
	if($typed === $_SESSION['captcharand_string']) {
		$ans = true;
		setcookie(session_name(), '', time()-36000, '/');
		$_SESSION = array();
		session_destroy();
	}
	return $ans;
}
?>

En captcha.php:

PHP:
<?

function dodoscaptcha_hextorgb($hexcode) {
	if(substr($hexcode, 0, 1) == "#") {
		$hexcode = substr($hexcode, -6);
	}
	$foo[r] = hexdec(substr($hexcode, 0, 2));
	$foo[g] = hexdec(substr($hexcode, 2, 2));
	$foo[b] = hexdec(substr($hexcode, 4, 2));
	return $foo;
}

session_start();
srand((double)microtime()*1000000); 
$string = md5(rand(0,9999)); 
$_SESSION['captcharand_string'] = substr($string, 17, 5);

/* default text color is black and bgcolor is white, you may pass in a customized text & bg color in hexcode */
if(isset($_GET['captchabgcolor'])) {
	$captchabg_rgb = dodoscaptcha_hextorgb($_GET['captchabgcolor']);
} else {
	$captchabg_rgb = array('r'=>'255', 'g'=>'255', 'b'=>'255');
}

if(isset($_GET['captchatextcolor'])) {
	$captchatext_rgb = dodoscaptcha_hextorgb($_GET['captchatextcolor']);
} else {
	$captchatext_rgb = array('r'=>'0', 'g'=>'0', 'b'=>'0');
}

// create a 50*20 image
$captcha_im = imagecreate(50, 20);

// white background and black text
$captcha_bg = imagecolorallocate($captcha_im, $captchabg_rgb[r], $captchabg_rgb[g], $captchabg_rgb[b]);
$captcha_textcolor = imagecolorallocate($captcha_im, $captchatext_rgb[r], $captchatext_rgb[g], $captchatext_rgb[b]);

// write the string at somewhat center
imagestring($captcha_im, 4, 6, 2, $_SESSION['captcharand_string'], $captcha_textcolor);

// output the image
header("Content-type: image/jpeg");
imagejpeg($captcha_im);
?>
 
Laatst bewerkt:
Op zich kan ik niets geks ontdekken in het script (Logisch, het is een kant-en-klaar script)

Maar een iframe werkt zeker weten niet? Zou de contact pagina even met een iframe willen uploaden waarbij het iframe het contactformulier op jouw site weergeeft.
HTML:
<iframe src="http://www.mmzone.nl/athenakeramiek/contact.php" height="80%" width="100%">Uw browser ondersteunt geen frames</iframe>
(De exacte url naar de contact pagina weet ik zo niet)
 
Grinnik, ja......zoals ik al zei heb ik niet zo veel ervaring. Kan niet zelf een script maken. Ik heb het gekregen van de server; hij wilde graag dat ik dit zou gebruiken omdat het veilig is. Ik heb er wel wat kleine dingetjes aan veranderd, maar dat mag geen naam hebben.

Moet ik misschien het formulier in php opslaan en dan vanaf mijn server binnen halen in een Iframe? Of maakt dat niet uit? Ik had het formulier in HTM op mijn server gezet en binnen gehaald in een IFrame in de contactpagina op de webruimte van mijn zus. Dat werkte dus zeker weten niet! Elke keer kreeg je de mededeling dat de captcha code niet klopte, terwijl die WEL goed was. Je kon het formulier daardoor niet versturen. Nu (met de formulieren op de webruimte van mijn zus) hapert het, maar in een IFrame (op de manier zoals ik hierboven beschreef) werkte het op dus helemáál niet.
 
Ik zal vanavond wanneer ik terug ben (of tussendoor tijd heb) even zelf wat in elkaar zetten, ik heb het script gedownload en zal zelf even wat proberen.
 
Ik heb het probleem bij mij op kunnen lossen door op de pagina waar het formulier is en de captcha-afbeelding wordt weergegeven het afbeelding gedeelte zo te doen.
HTML:
Spam protection (enter the text <img src="http://www.mmzone.nl/athenakeramiek/dodoscaptcha.php?captchabgcolor=EEEEEE&amp;captchatextcolor=900000" style="vertical-align: middle" /> below):

Vervolgens kon ik gewoon met een iframe werken waarbij ik het formulier op mijn php-site had en deze met een iframe aanriep.
 
Zo had ik dat ook gedaan. Heb je ook geprobeerd het formulier op te sturen? Ik kwam niet door de spambeveiliging heen. Kreeg elke keer de melding dat de ingetypte code niet goed was. De rest werkte wel, alleen heb je daar niet zo veel aan als verzenden niet lukt.
 
Laatst bewerkt:
Ik zit nog eens te denken. Toen ik het formulier apart op mijn server had gezet en in een frame binnenhaalde op de website van mijn zus, had ik NIET meer de volledige URL van beide scripten in de form action / spambeveiliging staan. Omdat het weer op dezelfde server als het formulier stond had ik dat weg gehaald. Moet dat wel?
 
Ik heb het even geprobeerd, mét volledige url verwijzingen dit keer. Maar het opsturen gaat ECHT niet in een IFrame. Als ik het formulier gewoon in htm op de pagina zélf zet en in de actie en spambeveiliging verwijs naar het script, lukt het de eerste keer niet, maar de tweede keer wel. Maar de bedoeling is dat het in 1x goed gaat........
 
Raar, bij mij ging het met de standaard captchaTest.php goed.

Het enige wat ik had gewijzigd was dat ik dus de afbeelding met volledige url opvroeg.
 
Misschien omdat de pagina niet online stond? Ik weet het niet hoor, ik ben een leek op dit gebied. Wel weet ik dat ik het formulier na jouw eerste tip (gewoon alleen de verwijzingen aanpassen en het formulier op de server van mijn zus zetten) ook buiten de server getest heb. Dat werkte prima. Toen reageerde ik heel blij op jouw tip en zette dit item op opgelost na jouw verzoek. Maar toen het eenmaal allemaal op de server stond ging het toch niet helemaal goed dus. Met het Iframe heb ik het niet buiten de server geprobeerd, dus daar kan ik niets over zeggen.

Ik vind het ontzettend aardig dat je zo mee denkt en probeert. Heel erg bedankt!!

Is er een andere manier om het script te laten draaien op mijn server en te gebruiken in de formulieren van de website van mijn zus (op haar webruimte). Ik had gehoord dat dat met PHP include moet. Maar ik krijg dus niet duidelijk hoe dan.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan