

Class İçindeki Fonksiyonları Birbirlerine Bağlama (Php Nesneler)
-
merhaba arkadaşlar uc tane fonksiyonum var bi tanesi curl ile siteye baglanıyo ikinisi baglanılan sitedeki linkleri bulup bir dizi değişkene atıyo.üçüncüsüde 2. fonksiyonun verdiği dizi değişkendeki verileri teker teker veritabanına kaydediyo bu üçünü bi sayfaya include edip kullanmak istiyorum spagetti kod yazarak yaptım ama gene buna benzer şeylere ihtiyacı olacagı için fonksiyona cevirdiö işlemleri şimdi olmadı sorun buyuk ihtimalle dizi değişkenlerden kaynaklanıyo neyse kodları veriyorum:
<?php
class islem{
public $url='';
function __get($name){
return $this->$name;
}
function __set($name,$value){
$this->$name=$value;
}
function baglan($url){
$oturum=curl_init();
$veri=curl_exec($oturum);
curl_setopt($oturum,CURLOPT_URL,$url);
curl_setopt($oturum,CURLOPT_POST,0);
curl_setopt($oturum,CURLOPT_POSTFIELD,"sifre=sallama");
curl_setopt($oturum,CURLOPT_RETURNTRANSFER,1);
return $icerik=curl_exec($oturum);
}
function linkleri_al($icerik){
if(preg_match_all('/href="(.*?)"/',$icerik,$sonuc)){
foreach($sonuc as $key=> $deger){
echo $deger[0];
}}}
function verilerikaydet($deger){
@ $db= new mysqli('localhost','root','','curl');
for($i=0; $i<count($deger); $i++){
$db->query("insert into linkler (id,link) values ('','$deger[$i]')");
}}
function kaclinkvar($deger){
echo count($deger);
}
}
?>çağırdıgım sayfadaki kodlar:
<?php
require 'fonksiyonlar.php';
require 'baglanti.php';
$a=new islem();
$url='www.kilodiyet.org';
$veriler=$a->baglan($url);
$linkler=$a->linkleri_al($veriler);
#echo $a->kaclinkvar($linkler);
?> -
ne istediğini anlamadım acıkcası bıraz daha acıklayıcı yazman mumkunmudur?
-
tabi
şimdi classın içinde bağlan isminde bi method var bu method verilern $url ye curl ile bağanıyo ve sitenin verilerini $icerik değişkenide kaydediyo
function linkleri_al metoduda $içerik değişkeninin içindeki href="" lerin arasındaki linkleri alıyo ve $deger[0] a kaydediyo sonra son metodta $deger[o] daki verileri mysqle kaydediyoyani etmesi gerekiyoama etmiyo benim amacım bağlandıgım sitedeki tum linkleri(index.php,hede.php) alıp onları mysqle kaydetmek,
ilk verdiğim kodu şöyle deiştireyim localde çalışınca birsürü link çıkıyo onune o linkleri mysqle kaydetmek istiyorum
<?php
class islem{
public $url='';
function __get($name){
return $this->$name;
}
function __set($name,$value){
$this->$name=$value;
}
function baglan($url){
$oturum=curl_init();
$veri=curl_exec($oturum);
curl_setopt($oturum,CURLOPT_URL,$url);
curl_setopt($oturum,CURLOPT_POST,0);
curl_setopt($oturum,CURLOPT_POSTFIELD,"sifre=sallama");
curl_setopt($oturum,CURLOPT_RETURNTRANSFER,1);
return $icerik=curl_exec($oturum);
}
function linkleri_al($icerik){
if(preg_match_all('/href="(.*?)"/',$icerik,$sonuc)){
for($i=0; $i<count($sonuc[0]); $i++){
return $linkler[$i]=substr(substr($sonuc[0][$i],6,70000),0,-1);
}}
}
function verilerikaydet($deger){
@ $db= new mysqli('localhost','root','','curl');
for($i=0; $i<count($deger); $i++){
$db->query("insert into linkler (id,link) values ('','$deger[$i]')");
}}
function kaclinkvar($deger){
echo count($deger);
}
}
?>çağrılan sayfa:
<?php
require 'fonksiyonlar.php';
require 'baglanti.php';
$a=new islem();
$url='www.kilodiyet.org';
$veriler=$a->baglan($url);
$linkler=$a->linkleri_al($veriler);
$a->verilerikaydet($linkler);
#echo $a->kaclinkvar($linkler);
?> -
ben cagırdıgn sayfada verilerikaydet metodunu cagırdıgını goremedım. ve
function linkleri_al($icerik){
if(preg_match_all('/href="(.*?)"/',$icerik,$sonuc)){
foreach($sonuc as $key=> $deger){
echo $deger[0];
}}}brada herhangı bı donus degerı olmadıgı ıcın $linkler=$a->linkleri_al($veriler); bu satırıda anlamadım :/
-
tamam 2.mesajımı editledim son hali var orda çalışan şekle nasıl getirebilirim
-
bana cagırsanda kaydetmedıgı o full kodu verırmısın ?
-
sirhot bunu yazdı:
-----------------------------
bana cagırsanda kaydetmedıgı o full kodu verırmısın ?
-----------------------------2.mesajda verdim full kodu istersen burdanda sqlu falanda var içinde http://rapidshare.com/files/202067604/deneme.rar.html
-
selam deneme sansım olmadı ama deneme-yanılma yontemı ıle hatanın bu fonksiyonda oldugnu dusundum...
yeni linkleri_al fonksiyonunu değiştirerek denermısın?
function linkleri_al($icerik){
if(preg_match_all('/href="(.*?)"/',$icerik,$sonuc))
for($i=0; $i<count($sonuc[0]); $i++)
$linkler[$i]=substr(substr($sonuc[0][$i],6,70000),0,-1);
return $linkler;
} -
çok basit bişeymiş cevap tamamen programlama sintaksını bilmememden kaynaklanıyo
$linkler[$i]=substr(substr($sonuc[0][$i],6,70000),0,-1);
yazmak yerine
$linkler[$i]=substr(substr($sonuc[0][$i],6,70000),0,-1);
$return $linkler;
yazsaymısım hersey oluyomus tesekkurler sirhot