2012-02-27 10 views
0

こんにちは私は現在、フォームアクションを生成するために動的に生成されたURLを使用しています。 PHPの出力は/home2/fortehom/public_html/richmindonline/testenvironment/process.phpのようになります。フォームアクション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=""に追加されたことを動作ではありません私には正しいと思われますが、パスの先頭には/という結果はありません。

おそらく、/home2/fortehom/public_html/richmindonline/testenvironment/process.phpがサーバーのWebサイトディレクトリの外にあると思われる問題があります。パスから/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

あなたのお返事ありがとうございます、Michal、しかし私は本当にこれを理解することに問題があります。あなたの返答で言及したように、私はどのようにパスを削除することができますか? –

+0

回答を編集しました@Rob。非常に基本的なアプローチです。サーバー環境変数を使用してより堅牢なバージョンを検討する必要があります。しかし、これは今のところあなたのために働くはずです... – Michal

0

問題がパスということです「/ home2/fortehom/public_html/richmindonline/testenvironment/process.php "はローカルファイルシステム上のファイルへの絶対パスです。あなたのブラウザはこれをどうしたらいいのかわかりません。 Webルートを基準にファイルにリンクする必要があります。このようなものはうまくいくはずです:

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 action="action.php" method="post"> 
<input type="text" name="name" id="name"> 
<input type="submit" value="submit" name="submit"> 
</form> 

とaction.php Form.php

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

フォームアクションでaction.php設定することもできますし、私はあなたの代わりに完全なURLを取得することをお勧めする必要がありhttp://localhost/action.php

設定することができますフルパス。 $ _SERVER ['HTTP_HOST']を使用してください。

関連する問題