0

tellform フォームの .php ファイルに次の行があります。

// Gets the current URL
function CurrentPageURL()
{
    $pageURL = $_SERVER['HTTPS'] == 'on' ? 'https://' : 'http://';
    $pageURL .= $_SERVER['SERVER_PORT'] != '80' ? $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"] : $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
    return $pageURL;
}
$url = CurrentPageURL();

そして、次のどこか下: $message = "Hi! blahblahblah : $url";

また、.tpl ファイルには次の行があります。

<form id="tellform" action="tellafriend/processTell.php" method="post">

送信された電子メールに /tellafriend/processTell.php へのリンクがあり、ブラウザに表示されるような製品への実際のリンクがないことを除いて、すべてが機能しています。このことを修正するにはどうすればよいですか? ありがとう!

編集 1 電子メールの送信に関する .js 部分は次のとおりです。

// Use Ajax to send everything to processTell.php
submitHandler: function(form) {
    $("#send").attr("value", "Slanje...");
    $(form).ajaxSubmit({
        success: function(responseText, statusText, xhr, $form) {
            $(form).slideUp("fast");
            $("#response-tell").html(responseText).hide().slideDown("fast");
        }
    });
    return false;
}

解決済み だから、 IMSoP のおかげで私は問題を解決しました。彼はどこで問題が発生したかを説明してくれたので、ようやくわかりました。このfunction CurrentPageURL行を完全に削除し、問題のフォームの .tpl ページに次のコードを挿入しました。

<input type="hidden" name="urlToPutInEmail" value="<?php echo $this->url->link('product/product', 'product_id=' . $product_id); ?>" />

tellform.php ファイルで varible を呼び出しまし$urlToPutInEmailた。簡単なのは...これはopencartフレームワークで動作していることに注意してください。

ありがとうIMSoP!

4

1 に答える 1

0

あなたのJSは電子メールを送信していません。フォームを別のPHPファイルに送信しています(を使用ajaxSubmit)。

PHP に関する限り、AJAX リクエストは他のページ リクエストとまったく同じです。この場合、フォームに通常の [送信] ボタンがあるのと同じです。

したがって、フォームデータを受信して​​メールを生成しているのが「tellafriend/processTell.php」である場合、そのときの「現在の URL」は「tellafriend/processTell.php」になります。

実際に必要なものがのページの URL (つまり、フォームがオンになっているもの) である場合は、それをフォームの追加フィールドとして渡す必要があります (たとえば<input type="hidden">、PHP 関数を使用して入力します)。

于 2013-03-12T19:13:21.320 に答える