表格动作网址

时间:2012-02-27 02:33:45

标签: php

您好我正在使用动态生成的网址来生成表单操作。 PHP的输出与/home2/fortehom/public_html/richmindonline/testenvironment/process.php完全相同。

问题在于,当我将此动态网址插入action=""时,网址被解释为http://www.richmindonline.com/home2/fortehom/public_html/richmindonline/testenvironment/process.php,这是不正确的。我很确定这是因为路径开头的/。我不想改变我已经拥有的结构来解决这个问题。有没有办法将主页添加到网址的前面?

以下是我用来生成动态网址的代码,如果有帮助的话:

function pluginpath() 
{ 
$base = dirname(__FILE__); 
$path = false; 

if (@file_exists $base)."/wp-content/plugins/malware finder/process.php")) 
{ 
    $path = $base."/wp-content/plugins/malware finder/process.php"; 
} 
else 
if (@file_exists $base."/wp-content/plugins/malware finder/process.php")) 
{ 
    $path = $base."/wp-content/plugins/malware finder/process.php"; 
} 
else 
$path = false; 

if ($path != false) 
{ 
    $path = str_replace("\\", "/", $path); 
} 
return $path; 
} 

3 个答案:

答案 0 :(得分:0)

不确定我是否理解您真正想要做的事情,但是域名添加到action=""的行为对我来说似乎是正确的,而不是/开头的结果路径。

可能您遇到的问题是/home2/fortehom/public_html/richmindonline/testenvironment/process.php显然位于服务器上的网站目录之外。您应该从路径中删除/home2/fortehom/public_html/richmindonline/。通过这种方式,您将收到action="http://www.richmindonline.com/testenvironment/process.php",这应该是正确的......

您可以通过添加新的代码行来完成此操作,例如:

if ($path != false) 
{ 
   $path = str_replace("/home2/fortehom/public_html/richmindonline/", "", $path); 
   $path = str_replace("\\", "/", $path); 
} 

答案 1 :(得分:0)

问题是您的路径“/home2/fortehom/public_html/richmindonline/testenvironment/process.php”是本地文件系统上文件的绝对路径。您的浏览器不知道如何处理此问题。您需要链接到相对于您的webroot的文件。这样的事情应该有效:

function pluginpath() 
{ 
  $base = dirname(__FILE__); 
  $_base = str_replace($_SERVER['DOCUMENT_ROOT'],"",$base);
  $path = false; 

  if (@file_exists($base."/wp-content/plugins/malware finder/process.php")) 
  { 
      $path = $_base."/wp-content/plugins/malware finder/process.php"; 
  } 
  else 
  if (@file_exists($base."/wp-content/plugins/malware finder/process.php")) 
  { 
      $path = $_base."/wp-content/plugins/malware finder/process.php"; 
  } 
  else 
    $path = false; 

  if ($path != false) 
  { 
      $path = str_replace("\\", "/", $path); 
  } 
  return $path; 
} 

答案 2 :(得分:0)

嗯,我猜你在行动路径上犯了错误。基本上你正在尝试设置process.php的完整路径,但是你需要设置url。

例如form.php的

<form action="action.php" method="post">
<input type="text" name="name" id="name">
<input type="submit" value="submit" name="submit">
</form>

和action.php

<?php
    if(isset($_REQUEST['submit']))
    {
        echo $_REQUEST['name'];
        exit;
    }
?>

您可以在此处设置表单操作中的action.php,也可以设置http://localhost/action.php

我建议您检索完整网址而不是完整路径。使用$ _SERVER ['HTTP_HOST']。