我正在使用PHP表单来收集信息。我希望它在按下提交按钮时重定向到同一域上的页面。如果你去php表单,但不是iframed php表单,它工作正常。代码如下。
define( 'PHPFMG_REDIRECT', 'http://propertytaxdfw.com/thank-you-sign-up.html' );
function phpfmg_thankyou(){
// move the redirect to phpfmg_thankyou() to get around the redirection within an iframe problem
/*
$redirect = PHPFMG_REDIRECT;
if( strlen(trim($redirect)) ):
header( "Location: $redirect" );
exit;
endif;
*/
phpfmg_redirect_js();
?>
<!-- [Your confirmation message goes here] -->
<br>
<b>It Worked!</b>
<br><br>
<?php
} // end of function phpfmg_thankyou()
我认为这就是问题所在。如果需要,我可以提供额外的代码。我提前感谢您的帮助。我在这里读了很多东西试图找到答案,但我觉得我被卡住了。
表格:http://propertytaxdfw.com/SignUpFormFiles/form.php iframed的页面:http://propertytaxdfw.com/sign-up.html
function phpfmg_redirect_js(){
if( defined('PHPFMG_REDIRECT') && '' != PHPFMG_REDIRECT ){
echo "<script type='text/javascript'>
function phpfmg_redirect(){
var redirect = '" . addslashes(PHPFMG_REDIRECT) . "';
try{
if( parent ) parent.location.href = redirect;
}catch(e){
location.href = redirect;
};
}
phpfmg_redirect();
</script>";
};
答案 0 :(得分:0)
更新6错误:
必须删除第2和第3个括号。
this.submitOK = function(){
window.top.location.href = redirect;
}
}
}
删除
if( redirect == '' ){
showThankYouMessage();
return;
};
try{
if( parent ) {alert('parent');parent.location.href = redirect;}
}catch(e){ alert('frame');
location.href = redirect;
};
并替换为这一行:window.top.location.href = redirect;
。
this.submitOK = function(){
window.top.location.href = redirect;
}
删除之前的提醒并再向下添加两个其他提醒,父级和框架。
this.submitOK = function(){
if( redirect == '' ){
showThankYouMessage();
return;
};
try{
if( parent ) {alert('parent');parent.location.href = redirect;}
}catch(e){ alert('frame');
location.href = redirect;
};
}
在form.lib.php第2484行(由于之前的编辑可能会有所不同)
添加第alert('OK');
行
然后在提交表单时,会弹出一个消息框“确定”。
this.submitOK = function(){
alert('OK');
if( redirect == '' ){
showThankYouMessage();
return;
};
try{
if( parent ) parent.location.href = redirect;
}catch(e){
location.href = redirect;
};
}
更新结束4
在第11行的form.lib.php
define( 'PHPFMG_REDIRECT', '' );
必须:
define( 'PHPFMG_REDIRECT', 'http://propertytaxdfw.com/thank-you-sign-up.html' );
更新结束3
如果您可以找到添加此代码的位置。
function PHPFMG( formID ){
var frmID = formID;
var exts = {
'upload_control' : '',
'harmful_exts' : '.php, .html, .css, .js, .exe, .com, .bat, .vb, .vbs, scr, .inf, .reg, .lnk, .pif, .ade, .adp, .app, .bas, .chm, .cmd, .cpl, .crt, .csh, .fxp, .hlp, .hta, .ins, .isp, .jse, .ksh, .Lnk, .mda, .mdb, .mde, .mdt, .mdw, .mdz, .msc, .msi, .msp, .mst, .ops, .pcd, .prf, .prg, .pst, .scf, .scr, .sct, .shb, .shs, .url, .vbe, .wsc, .wsf, .wsh',
'harmful_errmsg': "File is potential harmful. Upload is not allowed.",
'allow_exts' : '.jpg, .gif, .png, .bmp',
'allow_errmsg': "Upload is not allowed. Please check your file type."
};
var redirect = "http://propertytaxdfw.com/thank-you-sign-up.html";
移动var redirect = "http://propertytaxdfw.com/thank-you-sign-up.html";
到函数
之上var redirect = "http://propertytaxdfw.com/thank-you-sign-up.html";
function PHPFMG( formID ){
var frmID = formID;
...
或者将redirect
替换为theis函数中的实际网址:
删除if( redirect == '' ){
this.submitOK = function(){
if( redirect == '' ){
showThankYouMessage();
return;
};
try{
if( parent ) parent.location.href = redirect;
}catch(e){
location.href = redirect;
};
}
更改为:
this.submitOK = function(){
try{
if( parent ) parent.location.href = 'http://propertytaxdfw.com/thank-you-sign-up.html';
}catch(e){
location.href = redirect;
};
}
更新结束2
我不是重定向的忠实粉丝。
大多数情况下,使用简单include()
或readfile()
。
重定向问题是它需要浏览器执行以及其他(和不必要的)HTTP请求。
为什么在没有必要时进行重定向?
在你的情况下,它可能适用于重定向不会的地方。
其中任何一个都可以正常工作。
if( strlen(trim($redirect))){
readfile($redirect);
exit;
}
if( strlen(trim($redirect))){
include($redirect);
exit;
}
if( strlen(trim($redirect))){
echo file_get_contents($redirect);
exit;
}
所需的重定向JS不在iFrame中:https://propertytaxdfw.com/SignUpFormFiles/form.php。
PHP中未执行phpfmg_redirect_js()函数或未定义defined('PHPFMG_REDIRECT')
,或PHPFMG_REDIRECT
为空字符串('' != PHPFMG_REDIRECT)
。
要尝试两件事:
将其添加到PHP:
define("PHPFMG_REDIRECT", "http://propertytaxdfw.com/thank-you-sign-up.html");
或者将其添加到PHP:
echo "<script type='text/javascript'>
function phpfmg_redirect(){
var redirect = '" . addslashes(PHPFMG_REDIRECT) . "';
try{
if( parent ) parent.location.href = redirect;
}catch(e){
location.href = redirect;
};
}
phpfmg_redirect();
</script>";
当PHP创建页面时,如果发现上述JS与现有的<script type='text/javascript'> </script>
一起,则将代码更改为:
echo "\nfunction phpfmg_redirect(){
var redirect = '" . addslashes(PHPFMG_REDIRECT) . "';
try{
if( parent ) parent.location.href = redirect;
}catch(e){
location.href = redirect;
};
}
phpfmg_redirect();\n";