• 05-05-2013, 19:49:19
    #1
    Merhaba arkadaşlar, bir süredir bu sorunla karşılaşıyorum. Php ile sitelerden verileri çekip ekrana yazdırıyorum. Burada hiç bir sıkıntı olmuyor. Fakat mysql ile insert ettirdiğimde ya büyük kısmını eklemiyor ya da eklediklerinde yazıları az alıyor... Çok küçük bir kısmı sağlam çalışıyor. Son denememi size yazayım kodlar aşağıda;

    gnoxis.php

    <meta charset="utf8" />
    <?php
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    
    /**
     * Description of gnoxis
     *
     * @author onuragtas
     */
    include './fonksiyon.php';
    
    class gnoxis extends fonksiyon {
    
        public $server = "localhost";
        public $username = "xxx";
        public $password = "yyyy";
        public $database_name = "xxx_yyy";
        public $site = "http://www.gnoxis.com/f41/bilim-and-teknoloji.html";
    
        function __construct() {
            $date = $this->date();
            $this->db($this->server, $this->username, $this->password, $this->database_name);
            $data = $this->curl($this->site);
            preg_match_all('|<a class="title" href="(.*?)" id="thread_title_(.*?)">(.*?)</a>|si', $data, $konu);
            for ($a = 0; $a < 11; $a++) {
                $url = $konu[1][$a];
                echo $title = $konu[3][$a];
    
                $data = $this->curl($url);
    
                preg_match('|<div id="post_message_(.*?)">(.*?)</div>|si', $data, $mesaj);
                $mesaj1 = strip_tags($mesaj[2]);
                echo "<br />";
    //            if ($this->kontrol("makale", "baslik='$baslik' AND mesaj='$message'")) {
                    
    //            } else {
    //                $ekle = $this->ekle("makale", "baslik, mesaj, tarih, yazan_id, kategori_id, image, onay", "'$title', '$mesaj1', '$date', '1', '13', 'article_images/', '0'");
    //                if ($ekle) {
    //                    $this->mail("external@linuxmail.org", "external@linuxmail.org", $message, $baslik);
    //                }
    //            }
                sleep(10);
            }
        }
    
    }
    
    $gnoxis = new gnoxis();
    ?>
    fonksiyon.php
    <?php
    
    class fonksiyon {
    
        public function db($server, $username, $password, $database_name) {
            $database = mysql_connect($server, $username, $password);
            mysql_select_db($database_name, $database) or die("Bağlantı hatası.");
            mysql_query("SET NAMES 'utf8'");
            mysql_query("SET CHARACTER utf8");
            mysql_query("SET COLLATION_CONNECTION = 'utf8_turkish_ci'");
        }
    
        public function curl($site) {
            $ch = curl_init($site);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
            curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6");
            $data = curl_exec($ch);
            curl_close($ch);
            return $data;
        }
    
        public function login($site, $fields_string) {
            $ch = curl_init($site);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
            curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
            curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie");
            curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie");
            curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6");
            $data = curl_exec($ch);
            curl_close($ch);
            return $data;
        }
    
        public function download($image, $dir) {
            $fp = fopen($dir . basename($image), 'w');
            $ch = curl_init($image);
            curl_setopt($ch, CURLOPT_FILE, $fp);
            $data = curl_exec($ch);
            curl_close($ch);
            fclose($fp);
        }
    
        public function ekle($table, $column, $values) {
            mysql_query("INSERT INTO $table ($column)VALUES($values)");
        }
    
        public function kontrol($table, $sart) {
            $query = mysql_num_rows(mysql_query("SELECT * FROM $table WHERE $sart"));
            if ($query > 0) {
                return TRUE;
            } else {
                return FALSE;
            }
        }
    
        public function mail($to, $from, $msg, $konu) {
            $headers = "MIME-Version: 1.0" . "\r\n";
            $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
            $headers .= 'From: <' . $from . '>' . "\r\n";
            mail($to, $konu, $msg, $headers);
        }
    
        public function replace($text) {
            $text = str_replace("/", "", $text);
            return $text;
        }
    
        public function date() {
            return date("d.m.Y");
        }
        
        public function wpPostXMLRPC($title, $body, $rpcurl, $username, $password, $category, $keywords = '', $encoding = 'UTF-8') {
            $title = htmlentities($title, ENT_NOQUOTES, $encoding);
            $keywords = htmlentities($keywords, ENT_NOQUOTES, $encoding);
            curl_setopt($ch, CURLOPT_HTTPHEADER, "charset=UTF-8;");
            curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8');
            $content = array(
                'title' => $title,
                'description' => $body,
                'mt_allow_comments' => 0, // 1 to allow comments
                'mt_allow_pings' => 0, // 1 to allow trackbacks
                'post_type' => 'post',
                'mt_keywords' => $keywords,
                'categories' => array($category)
            );
            $params = array(0, $username, $password, $content, true);
            $request = xmlrpc_encode_request('metaWeblog.newPost', $params, array('encoding'=>'UTF-8','escaping'=>'markup'));
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
            curl_setopt($ch, CURLOPT_URL, $rpcurl);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_TIMEOUT, 1);
            $results = curl_exec($ch);
            curl_close($ch);
            return $results;
        }
    
    }
    ?>
    veritabanında tablo ve sutunlar hep utf8_turkish_ci... Umarım çözüm bulunur, teşekkürler.
  • 05-05-2013, 22:45:34
    #2
    stringi mysql_query sorgusuna sokmadan mysql_real_escape_string fonksiyonundan geçir.
    muhtemelen stringin içinde tırnak ya da mysql komutu olarak değerlendirilecek komut geçerse sorguyu kırıyordur.

    ayrıca sınıf yapısı yazıyorsunuz ancak hata yönetimi koymamanız bir eksiklik. mysql_query komutunu bir değişkene atayın true dönerse sorun yok, false dönerse ekrana mysql_error() yazdırın ki hatanın nereden kaynaklandığını görebilesiniz.
  • 06-05-2013, 00:23:41
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Türkçe karakter, tek ve çift tırnaklar buna sebep olabilir. Aldığınız verileri süzmeden veritabanına eklemeniz zaten güvenlik açığı yaratabilir. mysql_real_escape_string() fonksiyonu ile verileri süzün.
  • 06-05-2013, 00:41:16
    #4
    Çok teşekkür ederim sorunum çözüldü