2012-02-27 7 views
0

Привет Я в настоящее время использую динамически созданный url для создания действия формы. Результат PHP выглядит точно так же, как и /home2/fortehom/public_html/richmindonline/testenvironment/process.php.Form action url

Проблема в том, что когда я вставляю этот динамический url в action="", этот URL-адрес интерпретируется как http://www.richmindonline.com/home2/fortehom/public_html/richmindonline/testenvironment/process.php, что неверно. Я уверен, что это из-за / в начале пути. Я не хочу менять структуру, которую у меня уже есть, чтобы исправить это. Есть ли способ удалить главную страницу из добавления на переднюю часть URL-адреса?

Вот код, я использую для создания динамического URL, если это помогает:

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; 
} 

ответ

0

Не уверен, если я понимаю, что вы на самом деле хотите сделать, но поведение, что домен добавляется в action="" кажется правильным для меня, ergo не результат / в начале пути.

У вас есть проблема, что /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); 
} 
+0

Спасибо за ваш отзыв, Михал, но у меня действительно проблемы с пониманием этого. Как я могу удалить путь вниз, как вы упомянули в своем ответе? –

+0

Я отредактировал свой ответ @Rob. Это очень простой подход, вы должны рассмотреть более надежную версию с использованием переменных окружения сервера. Тем не менее, это должно работать для вас на данный момент ... – Michal

0

Проблема заключается в том, что ваш путь «/ home2/fortehom/public_html/richmindonline/testenvironment/process.php "- это абсолютный путь к файлу вашей локальной файловой системы. Ваш браузер не знает, что с этим делать. Вам нужно указать ссылку на файл относительно вашего веб-сайта. Что-то вроде этого должно работать:

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; 
} 
+0

Привет jasonlfunk, я повторил эту функцию, и ничего не выводится. Я что-то упускаю? –

+0

Я просто скопировал ваш код и внеся некоторые изменения, не проверив его. Оказывается, у вас были синтаксические ошибки, которых я не заметил. Я обновил свой код. – jasonlfunk

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

я предлагаю вам, чтобы получить полный URL вместо полный путь. Используйте $ _SERVER ['HTTP_HOST'].