-3

ウェブサイトのランクを出力するクラスがあります

$urlInfo->getUrlInfo();

これは、ランクの Alexa amazon aws です。アウトはドメインのランクになります。ランクをデータベースに挿入する必要がありますが、変数に設定しないとできません。

私に何ができる?

私が試してみました:

 mysql_query("INSERT INTO rank (date, domain, rank) VALUES ('$date','$domain','".$urlInfo->getUrlInfo()."')")

しかし、ランクは空です。

これは geturlinfo 関数がどのように見えるかです

    public function getUrlInfo() {
    $queryParams = $this->buildQueryParams();
    $sig = $this->generateSignature($queryParams);
    $url = 'http://' . self::$ServiceHost . '/?' . $queryParams . 
        '&Signature=' . $sig;
    $ret = self::makeRequest($url);
    //echo "\nResults for " . $this->site .":\n\n <br>";
    self::parseResponse($ret);
}

次に、スクリプトは関数の配列を結果として定義します

      public static function parseResponse($response) {
        $xml = new SimpleXMLElement($response,null,false,
                                    'http://awis.amazonaws.com/doc/2005-07-11');
        if($xml->count() && $xml->Response->TrafficHistoryResult->Alexa->count()) {
            $info = $xml->Response->TrafficHistoryResult->Alexa;
            $nice_array = array(

//                 'City'           => $info->ContactInfo->PhysicalAddress->City,
//                 'State'          => $info->ContactInfo->PhysicalAddress->State,
//                 'Postal Code'    => $info->ContactInfo->PhysicalAddress->PostalCode,
//                 'Country'        => $info->ContactInfo->PhysicalAddress->Country,
//                 'Links In Count' => $info->ContentData->LinksInCount,
//                 'Rank'           => $info->TrafficData->Rank,
//                 'Usage'          => $info->TrafficData->UsageStatistics
                    'Rank'          => $info->TrafficHistory->HistoricalData->Data->Rank

            );
        }

                   foreach($nice_array as $k => $v) 
                    {
                        echo $k.': ' . $v ."\n <br>";
                    }

    }

更新:これは機能します。href=XX に入れることができるようになりましたが、まだ mysql に更新すると空白が表示されます

    $accessKeyId1 = "XXX";
    $secretAccessKey1 = "XXX";
    $site1 = $_GET['domain'];
    $StartNum1 = $_GET['currentdate']; 

    //$url = $urlInfo->getUrlInfo();
    //echo "URL : ".$url;  

    function Rank($accessKeyId, $secretAccessKey, $site, $StartNum)
    {$urlInfo = new UrlInfo($accessKeyId, $secretAccessKey, $site, $StartNum); $urlInfo->getUrlInfo();}
    echo "test url:<a href='/";
    $test = Rank($accessKeyId1, $secretAccessKey1, $site1, $StartNum1);

    //$testing = mysql_query("UPDATE rank SET rank = '".Rank($accessKeyId1, $secretAccessKey1, $site1, $StartNum1)."' WHERE domain = '4shared.com'") or die(mysql_error());
echo $test."'>test</a>";

更新のために、Rank($accessKeyId1, $secretAccessKey1, $site1, $StartNum1) と $test を試しました。

ここから何かアイデアはありますか?

4

1 に答える 1

1

$urlinfo->geturlinfo()上記のような名前の別の準備済みステートメントを作成する代わりに$url = $urlinfo->geturlinfo()、ステートメント内に次のように入れてみてください'$url'

mysql_query("INSERT INTO rank (date, domain, rank) VALUES ('$date','$domain','$url')");

あなたが抱えている主な問題は引用符だと思います。ステートメントが2つの部分に分割されているため、ステートメントが完全ではありません(引用しないでください)

最後に、実際にランクと呼ばれるテーブルを持っていますか? 列/行と呼んでいるように聞こえるからです。

私は自分の思考プロセスで作業しているだけです。これがうまくいく/役立つことを願っています =]


コメントで私はあなたがすべきだと言っていたのはこれです->

$rank = $this->url->getNewValue();
$url = $this->$rank->getUrlInfo();

mysql_query("INSERT INTO rank (date, domain, rank) VALUES ('$date','$domain','$url')");



以下のリンクを参照してSQL Injectionください。これは、アプリケーションをハッカーから保護するのに役立ちます。

SQL インジェクション: 情報
SQL インジェクション: 防止

于 2012-11-15T10:12:51.460 に答える