• 02-09-2012, 22:06:59
    #1
    Bir proje için yazdığım, havadurumu.com.tr üzerinden veri çeken ufak bir uygulama. Sizinde işinize yarayabilir.

    Weather.php (Class Dosyası)
    <?php
    
    	class Weather {
    	
    		function __construct( $city = null ){
    		
    			$this->url = 'http://www.havadurumu.com.tr/havadurumu/';
    			$this->city = $city;
    		
    		}
    		
    		function get_data(){
    		
    			$curldata = curl_init();
    				$options = array(
    					CURLOPT_URL => $this->url . $this->city,
    					CURLOPT_RETURNTRANSFER => true,
    					CURLOPT_HEADER         => false,
    					CURLOPT_FOLLOWLOCATION => true,
    					CURLOPT_USERAGENT      => "spider",
    					CURLOPT_AUTOREFERER    => true,
    					CURLOPT_CONNECTTIMEOUT => 120,				
    				);
    				curl_setopt_array($curldata, $options);
    				$data = curl_exec($curldata);
    				curl_close($curldata);
    				
    				return $data;
    		
    		}
    		
    		function parse_data(){
    		
    			$parse = $this->get_data();
    			
    			preg_match_all('#<span class="cur_temp">(.*?)</span>#si',$parse,$degree);
    			preg_match_all('#<img src="/icons/(.*?)".*?alt="(.*?)".*?title="(.*?)" />#si',$parse, $detail);
    			
    			$this->set_degree($degree[0][0]);
    			$this->set_image($detail[0][0]);
    			$this->set_condition($detail[2][0]);
    		
    		}
    		
    		function set_degree( $degree ){
    		
    			$this->degree = $degree;
    		
    		}
    		
    		function get_degree(){
    		
    			return $this->degree;
    		
    		}
    		
    		function set_image( $image ){
    		
    			$this->image = $image;
    		
    		}
    		
    		function get_image(){
    		
    			return $this->image;
    		
    		}
    		
    		function set_condition( $cond ){
    		
    			$this->condition = $cond;
    		
    		}
    		
    		function get_condition(){
    		
    			return $this->condition;
    		
    		}
    	
    	}
    
    ?>
    Kullanımı (veri.php)
    <?php
    
    	include_once 'weather.php';
    
    	if(!empty($_GET['c']))
    		$city = $_GET['c'];
    	else
    		$city = 'izmir';
    	
    	$Weather = new Weather($city);
    	
    		$Weather->parse_data();
    		$degree = $Weather->degree;
    		$city 	= $Weather->city;
    		$condit	= $Weather->condition;
    		$image	= $Weather->image;
    
    ?>
    kodu veri.php şeklinde çağırdığınızda otomatik olarak izmir havadurumunu getirecektir. veri.php?c=ankara yada veri.php?c=ankara/kizilay olarak çağırdığınızda yazdığınız şehrin ve semtin havadurumunu getirecektir.

    condition = metin olarak hava durumunu verir (örn: parçalı bulutlu)
    image = hava durumu görselini verir.
    degree = dereceyi getirir.
    city = çağırılan şehri.

    kolay gelsin.
  • 03-09-2012, 03:25:22
    #2
    aşağıdaki şekilde bir hata alınıyor.
    safe mod'u kapatıp denediğimde ise boş ekran ile karşılaşıyorum.



    Warning: curl_setopt_array() [function.curl-setopt-array]: CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir is set in
  • 03-09-2012, 11:26:42
    #3
    php.ini üzerindne open_basedir şeçeneği başına ; koyarak kapatabilirsiniz. birde öyle deneyin. localde deniyorsanız kodu en kötü ihtimalle //CURLOPT_FOLLOWLOCATION seçeneğini pasif edin.
  • 03-09-2012, 15:51:33
    #4
    rocksijen adlı üyeden alıntı: mesajı görüntüle
    php.ini üzerindne open_basedir şeçeneği başına ; koyarak kapatabilirsiniz. birde öyle deneyin. localde deniyorsanız kodu en kötü ihtimalle //CURLOPT_FOLLOWLOCATION seçeneğini pasif edin.
    kodlar çalışmıyor hem localde hemde iki ayrı serverda denedim curl açık başka uygulamalar kullanıyorum. boş bir sayfa geliyor
  • 03-09-2012, 16:43:58
    #5
    kodlar kullanılan projede de tarif edilen şekilde de çalışmaktadır.

    demo
  • 05-09-2012, 17:15:32
    #6
    http://www.ferfecir.org/veri.php?c=malatya evet anlatıldığı gibi çalışıyor. Varsa htaccess dosyanızı silin.