Get Adobe Flash player

“Notice: Undefined index” uyarısı için basit bir çözüm

Bu uyarı tanımlanmamış bir değişkene ulaşmaya çalıştığınız zaman size bilgi vermek için PHP’nin size döndürdüğü bir mesaj veya log dosyasında gördüğünüz bir uyarıdır. Kodunuzun başına error_reporting(E_ALL ^ E_NOTICE); satırını eklediğinizde bu mesajlardan kurtulabilirsiniz. Ama bu uyarıları kapatmak yerine çözmeye çalışmak ileride gerekli olan mesajları engellemeden çözüm sağlamak için daha iyi bir çözüm olur.

Bunun için genelde isset komutu ile değişkenin tanımlı olup olmadığı kontrol edilir. Böylece değişken tanımlı değilse o değişkenden veri çekilmeye çalışmaz.
if (!isset($degisken)) {} şeklinde bir kontrol ile her değişkenin kullanılmadan önce kontrol edilmesi, değişken tanımlanmadan işlem yapılmasını engelleyebilir.

Bir fonksiyon ile bu işi daha profesyonel çözemeye çalışalım.
Devamını okuyun »

Paylaş/Kaydet

Metin içindeki başı ve sonu aynı verileri diziye çekme

Text veri içinden belirli bir kurala göre girilmiş verileri çekmek için uzun kodlar yazmanıza gerek yok. icindebul fonksiyonu tam bu iş için. Aşağıda kolay anlaşılması için ufak bir örnek ile fonksiyonu paylaşıyorum. Umarım işinize yarar.

<?php
// başlangıç ve bitiş olarak verilen karakterlerin arasındaki değerleri dizi değişkeni olarak döndürür
    function icindebul($baslangic, $bitis, $incelenecekmetin) {
        preg_match_all('/' . preg_quote($baslangic, '/') . '(.*?[^\\\])'. preg_quote($bitis, '/').'/i', $incelenecekmetin, $bulunanlar);
        return $bulunanlar[1];
    }
    
    $baslangic = "benim";
    $bitis = "var";
    $incelenecekmetin = "benim 3 koyunum var, benim 7 köpeğim var, benim 5 keçim var. Senin neyin var.";

    $sonuc = icindebul($baslangic, $bitis, $incelenecekmetin);

    print_r ($sonuc);

/* Çıktı aşağıdaki gibi olacaktır
Array
(
    [0] =>  3 koyunum 
    [1] =>  7 köpeğim 
    [2] =>  5 keçim 
)
*/
?>

Pratik Curl Komutları

cURL; komut satırı üzerinden, URL sözdizimi kullanarak veri aktarımı yapmak için kullanılabilen bir yazılım kütüphanesidir.

cURL; Dict, DOSYA, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet ve TFTP, gibi çeşitli protokolleri destekler.

Bu yazı  pratik cURL kullanımı örneklerini göstermek için yazılmıştır.

1- Tek bir URL içeriğini kaydetmek

$ curl http://www.centos.org

  $ curl http://www.centos.org &gt; centos-org.html
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 27329    0 27329    0     0   104k      0 --:--:-- --:--:-- --:--:--  167k

 

2- cURL çıktısını bir dosyaya kaydetmek

-o (Küçük o) Sonuç, komut satırında sağlanan dosyaya kaydedilir

 -O (Büyük O) sonucu depolamak için URL dosya adı olarak kullanılacaktır

$ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html

gettext.html isimli sayfa ‘mygettext.html’ adlı dosyaya kaydedilir. İndirme sırasında ilerlemeyi gösterir.

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
 66 1215k   66  805k    0     0  33060      0  0:00:37  0:00:24  0:00:13 45900
100 1215k  100 1215k    0     0  39474      0  0:00:31  0:00:31 --:--:-- 68987

Eğer büyük O harfini parametre verirseniz, URL ismi lokal dosya ismi olarak kullanılacaktır.

$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html

Bu durumda ilerleme ölçümü devre dışı kalır.

3- Tek seferde çoklu dosya indirme

Komut satırında URL’leri belirterek tek seferde birden fazla dosya indirebilirsiniz.

$ curl -O URL1 -O URL2<span class="notranslate">

örnek :

$ curl -O http://www.gnu.org/software/gettext/manual/html_node/index.html -O http://www.gnu.org/software/gettext/manual/gettext.html

 

4- L seçeneği ile Başlık bilgisindeki yönlendirmeleri takip edebilirsiniz

Varsayılan olarak, cURL URL başlığında belirtilen taşınma linkini takip etmez. Bu parametre ile başlık bilgisinde gelen yönlendirme linki takip edilebilir.

$ curl http://www.google.com

<TITLE>302 Moved</TITLE>

<H1>302 Moved</H1>

The document has moved
<A HREF="http://www.google.com.tr/">here</A>

Aşağıdaki  örnekte yönlendirildiği sayfa içindeki yönlendirmeyi takip ederek, google.com.tr adresindeki kaynağı indirir.

$ curl -L http://www.google.com

devam edecek…

Error code 85ae0010 hatası ile MSN açılmıyor

 

Daha önce bahsettiğim, Microsoftun MSN programını Skype’a yönlendirme denemesinin 2. aşaması ile, böyle bir hata almaya başladıysanız, önceki yazımda belirttiğim programın yeni versiyonunu kurmanızın vakti gelmiştir.

MSN Reviver isimli programı bir kez çalıştırdığınızda MSN’i yamalayıp, düzgün çalışmasını sağlayacaktır.

İndirmek için Tıklayın.

MyISAM tablolarını INNODB’ye topluca çevirmek

Umarım işinize yarar.

<?php 
 // Veritabanına bağlantı yapılıyor
$vthost = 'localhost';
$vtkullanici = 'root';
$vtsifre = '';

$baglanti = mysql_connect($vthost, $vtkullanici, $vtsifre) or die ('MySQL Baglanti Hatasi');
$vtismi = 'veritabani';
mysql_select_db($vtismi);

// İş yapan kodumuzun başlangıcı
$sql = "SHOW tables";
$rs = mysql_query($sql);
while($satir = mysql_fetch_array($rs))
{
$tbl = $satir[0];
$sql = "ALTER TABLE $tbl ENGINE=INNODB";
mysql_query($sql);
echo "".$tbl;
}
echo " Tamamlandı.";
?>

Datron PL3C Sürücüleri

Datron PL3C Driver Devamını okuyun »

Sayfanız frame içinde gösterilemesin

Sayfanızın farklı sayfalar içinde frame içinde gösterilememesi için çeşitli yöntemler mevcut.

Eğer Javascript ile frame içinde gösterilmesini engellemek isterseniz; aşağıdaki kodu sayfanıza ekleyebilirsiniz.

<Script language="JavaScript">
<!-- Force all the previous frames off
if (self.parent.frames.length != 0) self.parent.location=document.location.href;
// -->
</script>

Php içinden header fonksiyonu kullanarak frame içinden kullanımı engellemek isterseniz; aşağıdaki gibi daha kısa bir kod ile amacınıza ulaşabilirsiniz.

<?php
header("X-FRAME-OPTIONS: DENY");
?>

PHP’de Sınıf Yapısına Giriş

PHP OOP’nin (Object Oriented Programming – Nesne Yönelimli Programlama) temeli sınıflardan (class) oluşur.

PHP’de sınıf (class) tanımlaması şu şekilde yapılır:

class isim
{

}

Oluşturduğumuz sınıfı kullanabilmemiz için onun görüntüsünü (instance) oluşturmamız gerekir. Görüntüsünü oluşturmak için new kodunu kullanırız.

$degisken = new isim();

Devamını okuyun »

SQL’de limit ile belli bir adet çekilen kaydı sıralamak.

Tablomuzdan 10 adet ile sınırlı veri çekmek istediğimizi varsayalım. Bu çektiğimiz verileri belli bir kritere göre sıralamak istiyoruz. sorgumuza ORDER BY ile bir kriter eklersek, bu kriteri uyguladıktan sonra 10 adet kayıt getireceği için istediğimiz sonuç dönmeyecek. Bizim istediğimiz, 10 adet kayıt çekelim, sonra bu kayıtları sıralayalım. Bunun için aşağıdaki gibi bir sorgu yazmamız gerekiyor.

select * from (SELECT * FROM `tablo` order by id limit 10) aliastablo order by kriter

sorguyu açıklayacak olursak,  SELECT * FROM `tablo` order by id limit 10 kısmı ile ilk 10 kaydı çekiyoruz, bunu aliastablo isimli bir tablo olarak isimlendiriyoruz. Böylece 10 kayıttan oluşan bir sanal tablomuz oluyor. Bu tablomuzda da ORDER BY işlemini uyguluyoruz.

Çözüm için Mesut Uğurlu’ya teşekkür ederim.

.htaccess ile dizin listeleme hizmetini düzenlemek

Bir web dizini içinde index.html dosyası (veya başka bir dizin dosyası) yoksa, bu web sitesinde bir dizine tarayıcı ile girildiğinde, o dizindeki dosyalar listelenir.

Bunu engellemek için genelde apache konfigurasyon dosyasından ayar yapılır. Alternatif olarak, htaccess dosyası kullanılarak da dizin listesi engellenebilir ya da engelleme kaldırılabilir.
Devamını okuyun »