0

アップロードされたファイルに対して適切な機能を実行できないのはなぜですかstrpos(最初にファイルをアップロードして$site = stream_get_line($f, 4096, "\n")から実行します)、サーバー上で手動で作成されたファイルから同じものを $site に読み込むと、完全に正常に動作します。

何が原因なのかわかりません...どちらの場合も行をよく読んでいるようですが、strposユーザー経由でアップロードした場合と手動で作成した場合は同じように機能しません。

コードは次のとおりです。

<?php
if(!$_FILES){ 
?>

<head>
<title>Bulk Index Checker</title>
</head>
    <center>
        <form method="post" enctype="multipart/form-data">
            <input type="file" name="file" size="50" />
            <br/>
            <input type="submit" value="Check 'em!" />
        </form>
    </center>

<?php
}
else{

    echo("<center> <h1>Checking... please wait.</h1> <br><table border=1> <tr><td>Site</td><td>Indexed</td></tr>");
    $target_path = "checkupload/";
    $target_path = $target_path . basename($_FILES['file']['name']); 
    move_uploaded_file($_FILES['file']['tmp_name'], $target_path);  

    $f = fopen($target_path, "r") or exit("Unable to open file!");

    while (!feof($f))
    {
        $site = stream_get_line($f, 4096, "\n");
        $url = 'http://www.google.com/search?q=info:' . $site;

        //sleep(3);

        $contents = file_get_contents($url);

        if (strpos($contents,'<h3 class="r"><a href="/url?q='.$site)!=FALSE) {
            echo("<tr bgcolor=\"Silver\"><td><a href=\"".$url."\" target=\"_blank\">".$site."</a></td><td>YES</td></tr>");
            echo("<br>");
        }
        else{
            echo("<tr><td><a href=\"".$url."\" target=\"_blank\">".$site."</a></td><td>NO</td></tr>");
        }
    }
?>

</table>
<br/>
<form>
</center>

<?php
}
?>

編集:これは私が試した別の方法です(テキストエリアを使用)-基本的に同じこと-URLを1つだけ入力した場合にのみ正しく機能します。下に別の URL を入力すると、最初の URL が実際には TRUE であるのに FALSE が表示されます。

なぜこうなった?

<?php
if(!$_POST){ 
?>

<head>
<title>Bulk Index Checker</title>
</head>
    <center>
        <h1>Bulk Index Checker v1.0</h1>
        <form method="post" enctype="multipart/form-data">
            <textarea id="list" name="list" rows="10" cols="50"></textarea>
            <br/>
            <input type="submit" value="Check 'em!" />
        </form>
    </center>

<?php
}
else{
    echo("<center> <h1>Checking... please wait.</h1> <br><table border=1> <tr><td>Site</td><td>Indexed</td></tr>");

    $lines = explode("\n", $_POST['list']);

    foreach($lines as $site) {
        echo($site);
        $url = 'http://www.google.com/search?q=info:' . $site;

        sleep(3);

        $contents = file_get_contents($url);

        if (strpos($contents,'<h3 class="r"><a href="/url?q='.$site)!=FALSE) {
            echo("<tr bgcolor=\"Silver\"><td><a href=\"".$url."\" target=\"_blank\">".$site."</a></td><td>YES</td></tr>");
            echo("<br>");
        }
        else{
            echo("<tr><td><a href=\"".$url."\" target=\"_blank\">".$site."</a></td><td>NO</td></tr>");
        }
    }
?>

</table>
<br/>
</center>

<?php
}
?>
4

1 に答える 1

0

「!=」の代わりに「!==」を使用してみてください。

この段階でテストするオプションはありません。http://php.net/manual/en/function.strpos.phpを参照してください(例 #2)

于 2013-06-24T12:18:30.053 に答える