0

joomal 2.5 の rsform pro でフォームを作成します フィールド内の複数の URL アドレスを禁止したい このコードを使用します

    if(isset($_POST['form']['link']))
{
$bad = array('ebooks.com','suprbay.org');
if(in_array($_POST['form']['link'],$bad))
{
    $redirectLink = 'index.php?option=com_rsform&formId='.$formId;
    $RSadapter->redirect($redirectLink,'this url limited');
}
}

このコードは、ユーザーが正確に「ebooks.com」または「suprbay.org」を使用する場合に真ですが、ユーザーが「www.suprbay.org」または「http://www.ebooks.com/635228/you-losing-weight/を使用する場合」 roizen-michael-f-oz-mehmet-c/ "またはそれとすべてを使用すると、このコードは機能しません

URLにコードが機能するメインドメインが含まれているときに行きました 助けてください ありがとう

4

3 に答える 3

0

あなたが試すことができます

$value = htmlspecialchars($_POST['form']['link']); // convert special characters
// note that you should'nt use $_POST
// joomla has it's own way to get request variables
// use JFactory::getApplication('site')->input->get('form', array(), 'post', 'array');
// this will return form array which you can work with

foreach($bad as $site)
{
    if(strposi($value, $site) !== false)
    {
        // value contains one of invalid links
    }
}
于 2013-07-24T12:03:08.303 に答える
0

URL のドメインを見つけるには、それを解析する必要があり、ゼロから行うのは簡単ではありません。便利な PHP 関数parse_urlがあり、これがそれを行います。

$parse_result = parse_url($_POST['form']['link']);
$link_domains = explode('.', $parse_result['host']);
$length = count($link_domains);
$link_main_domain = $link_domains[$length - 2].'.'.$link_domains[$length - 1];

次に、以前と同じように配列と比較$link_main_domainします。$bad

基本的parse_urlに、(とりわけ) 完全なドメイン文字列を返します。例: 「subdomain.domain.tld」。コードの残りの部分は、そのドメインの最後の 2 つのセグメントを取得するだけです。

より簡単な解決策は、回避したいドメインのリンクを検索することですが、これは、ホスト セグメント以外の URL に表示されることを考慮していません。

リンク先がどこにあるのかわからないことに注意してください。独自のドメインが何であれ、誰かを「悪い」サイトに転送する可能性があります。

于 2013-07-24T12:06:08.027 に答える