Opencart、OC 1.5.1.3、captchaエラー

OC 1.5.1.3では、Captchaイメージは次のページのいずれにも表示されません。

  1. 商品/レビューセクション
  2. 連絡先ページ
  3. http://www.directmall.coにアクセスして.uk/index.php?route = information/contact/captcha (画像を生成する直接リンク)

エラーは表示されません(Apacheログ/ error.txtファイル)。言語ファイル内に空白が見えません。実際、ENパッケージ全体を再ダウンロードしました。

私は壊れた依存関係を疑う(たとえ私がGDを持っていても..何か他のものがなければならない)。完全にキャッシングが無効になっている - 援助が必要です!

2009年に私はフォーラムでそのようなエラーの跡を見つけましたが、言語ファイルの問題があるように見えます。つまり、スペースの痕跡がページヘッダーを通常より早く送信していたことを意味します。私は余分なスペースをすべて掃除しました。結果はありませんでした。

ありがとう、 ボグダン

4

7 答え

私はこの同じ問題を抱えていました。この解決策(system \ library \ captcha.phpへの変更)は、キャプチャ画像が正常に表示され、フォームが検証を通過する

function getCode(){
$out = ob_get_contents();
$out = str_replace(array("\n", "\r", "\t", " "), "", $this->code);
ob_end_clean();

    return $out;
}
14
追加された
魔法のように働いた。
追加された 著者 Ronny Sherer,
ありがとう、ありがとう、ありがとう。 OCフォーラムの誰も答えを知っている人はいません。
追加された 著者 user1889007,

OC 1.5の場合*

system \ library \ captcha.php

function getCode()を検索する

function getCode(){
$code= ob_get_contents();
$code= str_replace(array("\n", "\r", "\t", " "), "", $this->code);
ob_end_clean()    return $code; }

今OC 2.1のために* Go to

Catalog/controller/captcha/basic-captcha

Find $this->session->data['captcha'] = substr(sha1(mt_rand()), 17, 6);

後にコードの下に置きます

    $code= ob_get_contents();
    $code= str_replace(array("\n", "\r", "\t", " "), "",$this->session->data['captcha']);
    ob_end_clean();
    $this->session->data['captcha'] = $code;

OC 2.3の場合*

Catalog/controller/Extension/captcha/basic-captcha.php Find $this->session->data['captcha'] = substr(sha1(mt_rand()), 17, 6); 後にコードの下に置きます

    $code= ob_get_contents();
    $code= str_replace(array("\n", "\r", "\t", " "), "",$this->session->data['captcha']);
    ob_end_clean();
    $this->session->data['captcha'] = $code;

その有用な!

2
追加された

これを探している人を明確にするだけです。 system/library/captcha.php

変更機能ライン11 getCode()

これに:

function getCode(){
    //return $this->code;
    $out = ob_get_contents();
            $out = str_replace(array("\n", "\r", "\t", " "), "", $input);
            ob_end_clean();

            return $out;
}

これはしなければならない。

1
追加された

Google Chromeの view-source:http://www.directmall.co.uk/index.php?route = information/contact/captcha を実行すると、Google Chromeの前面に空白があることがわかりました画像の内容

You might have accidentally outputted "\n" somewhere in your code before <?php or after ?>,

1
追加された
PHPエラーログを確認する必要があります(有効になっている場合) - これはopencartエラーログと同じではありません。そこには、すでに送信されたヘッダーと、出力が開始された場所(行番号とファイル)に関するエラーメッセージが表示されます。
追加された 著者 Jay Gilford,
試しました:/system/library/captcha.php、/index.php、/catalog/language/english/english.php - 私はあなたが言っていることを理解しています。この問題は、2008/2009年の多くのWebフォーラムで議論されましたが、私は空間がどこに適合しているのか考えることはできません。 directmall.co.uk/index.php?route=information/contact/captcha のパスには他のパスよりも少ないパスが含まれていますが、上記のファイル内では問題は確認できません。 charsetの問題があるかもしれません - 私は上記のUTF-8を設定しています。私は非常にあなたの援助に感謝し、助言をしてください。
追加された 著者 Bogdan Ciocoiu,
エラーはありません - 私はそれがありそうもないことを知っていますが、私はエラーを見ることができず、私はE_ALLを実行します。 Plesk 10はPlesk 9からアップグレードされました。
追加された 著者 Bogdan Ciocoiu,

getcode関数の後にこのコードを追加する必要があります(ライブラリのcaptcha.php)

$out = ob_get_contents();
$out = str_replace(array("\n", "\r", "\t", " "), "", $input);
ob_end_clean();
1
追加された
まだ結果はありません.....私は文字通り "function getCode(){"と "return $ this-> code;"の間にこれらの2行を追加しました。私は "$ this-> code;"からのリターンを変更しました。 "$ this-> code"で "$ input"を変更しましたが、すべての可能な組み合わせにはまだ結果がありません。
追加された 著者 Bogdan Ciocoiu,

私は最近この問題に遭遇しました。この共通の解決策(これまで私のために働いていた)はうまくいかなかった:

$out = ob_get_contents();
$out = str_replace(array("\n", "\r", "\t", " "), "", $input);
ob_end_clean();
return $out;

I noticed that the showImage() method in /system/library/captcha.php accesses $this->code directly rather than using its getter, getCode(). That means it's bypassing the function to strip whitespace.

しかし、このようにコンストラクタを変更すると、

function __construct() { 
    $this->code = substr(sha1(mt_rand()), 17, 6); 
    $this->code = str_replace(array("\n", "\r", "\t", " "), "", $this->code);
}

More info and a vQmod extension to apply this fix can be found here: http://www.antropy.co.uk/blog/opencart-captcha-not-working-jfif/

0
追加された

私は同じ問題を抱えていました。私の特別なケースでした。これが解決策でした。おそらく、product.phpを修正するときに、デバッグするのが非常に難しい空白行がいくつか導入されている可能性があります。いずれにせよ、このコード:

$out = ob_get_contents();
$out = str_replace(array("\n", "\r", "\t", " "), "", $input);
ob_end_clean();

return $out;

そこにはいけない何かを清めるので、それを修正しました。

それが誰を助けることを願って

0
追加された