PHP’de hiç kompleks bir değişkeni veritabanında ya da dosyalarda saklamak istediniz mi? Örneğin tipi array olan bir değişkeni veritabanında saklamak istiyoruz. İşte bunu serialize() fonksiyonu ile yapmamız mümkün.
serialize()
Şimdi kompleks bir dizimizi saklayacak hale getirelim.
Sonuç olarak bu fonksiyonu kullanacağınız bir çok yer olacağına eminim. Bilmiyorsanız öğrendiniz, biliyorsanız pekiştirdiniz. Bir başka fonksiyon anlatımında görüşürüz ^^
Merhaba arkadaşlar, ben sunucu için digitalocean’ı kullanıyorum. Bu yüzden videoda digitalocean’dan ilk olarak centos sunucu alarak başlıyorum. Daha sonra sunucuma ssh ile bağlanıyorum ve aşağıdaki adımlar ile gerekli pakelerimi kuruyorum…
Apache Kurulumu
İlk olarak root olarak bağlanmadıysanız;
sudo su
diyerek root olun sunucuda. Şimdi apache kurulumu için şu satırı yazın;
yum install httpd
Gelen mesajlara y deyip enter’layın. Bu hepsi için geçerlidir ????
Sunucuya php kurmak çok basit. Şu satırı çalıştırın;
yum install php php-mysql
Kurulum bittikten sonra apache’yi yeniden başlatalım;
systemctl restart httpd.service
Eğer herhangi bir php modülü yüklemek isterseniz önce modülleri şu satırı çalıştırıp arayın;
yum search php-
Örneğin php-fpm modülünü yükleyeceksiniz. Şu şekilde yükleyebilirsiniz;
yum install php-fpm
Şimdi artık php’yi kurduğumuza göre, dosyalarımızı hangi klasöre atacağımızı görelim;
/var/www/html
Bu klasöre atıyoruz dosyaları. Hemen bir tane test index.php oluşturalım. Ama ondan önce nano kurulumu yapalım. Nano dosyaları konsol üzerinden editlemek için kullandığımız bir araç. Şu satırı çalıştıralım;
yum install nano
Kurulumu yaptıktan sonra önce ilgili klasöre şu satırla girelim;
cd /var/www/html
Ve bir index.php oluşturalım;
touch index.php
Şimdi onu düzenlemek için açalım;
nano index.php
Ekrana boş sayfa gelecek bu sayfa içine şu kodu yazalım;
<?php phpinfo(); ?>
Ve ctrl + x yapalım y deyip enter’layalım kaydedilmiş olacak. Şimdi tekrar ip adresinize girdiğinizde php info’yu görebilirsiniz..
MySQL Kurulumu
Sıra geldi mysql’i kurmaya.. Mysql’i önce indirmemiz gerek. Şu adrese girin; https://dev.mysql.com/downloads/repo/yum/ Buradan son sürümü bulun. Örn: mysql57-community-release-el7-11.noarch.rpm
başladığını kontrol etmek için şu satırı çalıştırıp emin olabilirsiniz;
systemctl status mysqld
Şimdi geçici olarak mysql için bir şifre oluşturdu. Bunu bulalım;
grep 'temporary password' /var/log/mysqld.log
Bu size geçici şifreyi döndürür kopyalayın onu. Mysql ayarlarını yapılandırmaya başlayalım;
mysql_secure_installation
Sizden şifreyi isteyecek yapıştırıp enter deyin, sonra yine aynı şeyi yapıp yeni şifreyi belirleyin. Mysql’e test bağlantısı yapıp sorunsuz olduğunu kontrol edelim;
mysql -u root -p
Şifreyi girdikten sonra mysql> diyorsa tamamdır bu iş. exit; deyip çıkın.
phpMyAdmin Kurulumu
Öncelikle şu satırı çalıştırın;
yum install epel-release
Ve sonra şu satırı
yum install phpmyadmin
Şimdi phpmyadmin’in ayarlarını yapacağız. Erişimi sadece sizin ip adresinizle kısıtlamak için;
nano /etc/httpd/conf.d/phpMyAdmin.conf
Eğer şöyle bir hata alıyorsanız: nano: command not found o zaman nano’yu aşağıdaki satır ile kurup tekrar deneyin.
yum install nano
Dosyayı düzenlemek için açtığınızda 127.0.0.1 ip’si gördüğünüz yerleri sizin kendi ip’niz ile değiştirin. IP’nizi google’a what is my ip address diye aratarak bulabilirsiniz. Ctrl + x yapıp y tuşuna basıp enter’layarak dosyayı kaydedin.
Son olarak Apache’yi yeniden başlatıyoruz.
systemctl restart httpd.service
Artık sunucunun ip adresinin sonuna /phpmyadmin yazıp panele ulaşabilirsiniz.
Mysql’de belirlediğiniz kullanıcı adı ve şifreyle giriş yapın. Kullanıcı adı her zaman root’tur.
Eğer IP kısıtlaması olmadan her ip’ye izin vermek istiyorsanız o zaman yine aynı dosyada şunu ekleyin;
<RequireAny>
# Require ip 88.253.4.68
# Require ip ::1
Require all granted
</RequireAny>
Ve yine apache’yi yeniden başlatıp test edin.
.htaccess Ayarı
Son olarak .htaccess kullanmak için ufak bir ayar yapacağız. Şu komut satırın çalıştırın;
nano /etc/httpd/conf/httpd.conf
Açılan dosyada AllowOverride değerini All yapacağız.
. . .
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride All
. . .
Ve son olarak apache’yi yeniden başlatıyoruz.
systemctl restart httpd.service
Evet, artık gerekli şeyleri kurduktan sonra cloudflare ile domaini bağlamak var.
Yazma İzinleri
Eğer her şeyi doğru kurup yazma izniyle ilgili problem alıyorsanız, şu komutu çalıştırıp çözebilirsiniz.
chcon -R -t httpd_sys_rw_content_t /var/www
Cloudflare Ayarları
Cloudflare.com’a girip kayıt olun. Daha sonra sağ üstten add site diyerek sitenin adresini yazıp start scan butonuna basıp 40 saniye bekleyin. İşlem tamamlandıktan sonra gelen yerde 2 tane A recordu girmeniz gerek bunlar aşağıdaki gibi;
A —- siteadi.com —- sunucu ip adresi A —- www —- sunucu ip adresi
Bunları girip next deyince ödeme kısmı gelir, free deyip sonraki adıma geçin. O adımda size 2 tane nameserver verecek. Bunları alıp domaini aldığınız siteye girin, domaini düzenleye tıklayıp ns’leri bu 2 ns ile değiştirin.
http://intodns.com/siteadi.com buradan kontrol edin, değiştiğinde cloudflare üzerinden verify yapın o kısım yeşil olunca cloudflare ayarlarıda tamam demektir. Artık domain adını yazarak sunucunuza bağlanabilirsiniz ????
Girilen renk değerinin hex olup olmadığını doğrulamam gerekiyordu. Ufak bir araştırma sonucunda ise aşağıdaki kodlar ile doğrulama işlemi yaptım. Birgün size de lazım olabilir diye paylaşıyorum.
$color = 'fa6582';
if (ctype_xdigit($color) && (strlen($color) == 6 || strlen($color) == 3)){
echo 'geçerli hex renk kodu';
} else {
echo 'geçersiz bir hex kodu';
}
Geçenlerde altyazıları yüklerken aklıma takıldı. Bazı altyazılar UTF-8, bazıları ise ISO-8859-9. Bu yüzden yazdığım kodlar birini düzgün gösterirken diğerini göstermiyordu. Bu yüzden dosyanın hangi karakter kodlamasına ait olduğunu öğrenmem gerekiyordu. Ve şöyle bir kod yazdım;
$open = file_get_contents('test.srt');
$enc = mb_detect_encoding($open, mb_list_encodings(), true);
echo $enc; // örnek çıktı: UTF-8 ya da ISO-8859-9
Peki bunu bulmak benim ne işime yaradı? Bu sayede header ile karakter setini belirleyebildim şu şekilde;
Bazen API’ler sizden json data göndermenizi isteyebiliyor, bu gibi durumda cURL ile post işleminde ufak birkaç eklemek yapmak gerekiyor. İlgili kod parçacağına aşağıdan bakabilirsiniz. Ayrıca post edilen yerde alma yöntemi de biraz farklı, onuda 2. kısımda bulabilirsiniz ????
Bu dersimde son zamanlarda sıkça kullandığım css’in flex özelliğini kullanarak sticky (yapışkan) footer yapımını göstermek istiyorum. Temel anlamda aslında kodlarım şunlardan ibaret;
Daha önce mutlaka :nth-child() filtresini kullanmışsınızdır css yazarken. Ancak bu filtrenin bazı güzel ipuçları var, işimize yarayacak. Bu yazıda size hızlıca bunları göstermek istiyorum. Önce basit bir html yapısı kuralım;
Burada 5 yerine kaç yazarsanız ilk o kadarı seçilecektir.
ul li:nth-child(-n+5) {
background-color: yellow;
}
Son 5’i seçmek (:nth-child(n+6))
Burada dikkat etmeniz gereken son kaçı seçecekseniz her zaman bir fazlasını yazmanız.
ul li:nth-child(n+6) {
background-color: yellow;
}
3 ile 8 aralığındakileri seçmek (:nth-child(n+3):nth-child(-n+8))
ul li:nth-child(n+3):nth-child(-n+8) {
background-color: yellow;
}
3’er 3’er seçmek (:nth-child(3n))
Ayrıca odd ve even ile de kullanımı var. Her ikisini de aşağıda gösteriyorum.
ul li:nth-child(3n) {
background-color: yellow;
}
Her 3’ü ama sadece çift olanlar olsun istersek. Yani her 3’ü seçecek ama çift olan 6. oluyor. Dolayısı ile 3. yü atlayacak 6’yı seçecek 9. yu atlayacak 12’yi seçecek.
ul li:nth-child(3n):nth-child(even) {
background-color: yellow;
}
Tam tersinde ise tekleri seçecek. Yani 3’ü seçecek 6’yı atlayacak 9’u seçecek…
ul li:nth-child(3n):nth-child(odd) {
background-color: yellow;
}
4. den başlayıp 3’er 3’er seçmek (:nth-child(3n+4))
Burada eğer 2. den başlayıp 4’er 4’er seçmesini isterseniz 4n+2 demeniz yeterli ????
ul li:nth-child(3n+4) {
background-color: yellow;
}
Her sene böyle bir yazı hazırlıyorum, bu sene de yılımı değerlendirmek için bu yazıyı yazıyorum ????
Bu yıl içerisinde çok büyük 2 olay yaşadım. 1- Darkod ofisini kapattım. 2- Türkiye’den Malta‘ya taşındım.
Evet, Malta’ya geldiğim için ofisimizi kapatmak zorunda kaldım, arkamda bir çok sevdiğimi bırakarak Malta’ya yerleştim. Burada bir hayat kurmaya, düzen oluşturmaya çalıştım. Elbette fırsatım oldukça gidip ailemi ve sevdiklerimi ziyaret ediyorum ancak artık burada bir düzen kurup yaşamaya çalışıyorum.
Bu aldığım kararın Türkiye’de olan olaylarla çok bir alakası yok, Türkiye son günlerini bile yaşayacak olsa vatanımı terk etmem. Bu aldığım kararlar tamaman kendimle alakalı, yani geçen yıldan kendime verdiğim sözler vardı. Yeni bir dil öğrenmek, gelirimi artırmak gibi. Sonuçta nerede doğduğun değil nerede doyduğun önemli demişler.
Burada ki şartlar ve bana katacakları daha iyi olduğunu düşündüğüm için ciddi bir karar vererek Malta’ya taşındım.
Geçen yıllarda aldığım şeyleri de söylüyordum, ancak daha sonra biraz düşününce bunun görgüsüzlük olarak algılanabileceğini fark ettim. Bu yüzden kayda değer bir şey almadığım sürece şunu bunu aldım demeyeceğim. Belki aldıklarımın ne üzerine olduğundan bahsederim ????
Ancak bu yıl kayda değer aldığım bir şey var. Oda arabam! Evet, o kadar güzel bir duygu ki ???? Sonunda kendime ait güzel bir şeyim var. Bu yıl kendime güzel bir araba aldım, gerçi aldıktan 1 ay sonra babama bırakıp Malta’ya yerleştim ama olsun sonuçta aldım ????
Babam içinde çok güzel bir haber oldu, onu öyle duygulu gördüm gururlu gördüm ya, bu saatten sonra ölsem de gam yemem. Bir şeyleri başardım!
Onun dışında bu yıl sürekli youtuber olmak istedim, hep bunun üzerine ürünler aldım. Kameralar, teknik ekipmanlar, ışıklar vs. Ama bir türlü youtuber olamadım, çünkü öyle kamerayı açıp sadece kendimi ve günlük rutinlerimi çekmek bana mantıklı gelmedi. Ben kimim aq? Öyle düşününce bir çok kez çektiklerimi koymaktan vazgeçtim ???? Ama bir gün doğru konsepti bulup youtuber olacağım, şimdilik eğitim videolarıyla devam!!
Bu yıl beni üzen tek şey aslında hazırladığım eğitim videoları. Koca bir yılda sadece 9 tane eğitim videosu hazırlamışım, şaka mı lan bu? Şaka değil, gerçek ???? Ama bunun sebepleri belli, yine de bahaneler ardına saklanmak istemiyorum o yüzden yeni yılda hedeflerimi çok daha büyük tutacağım.
Bu yıl içinde en çok hissettiğim duygu ise özlem oldu, sevdiğim insanların yanımda olmasına, yanımda olmasa bile en fazla yarım saatte gidip yanlarında olabileceğimi bilmeye alışmıştım. Şimdi böyle uzun zaman sonra görmek bir garip oluyor, ama sanırım bununla baş edebilirim. Sonuçta bunu tek yapan ben değilim değil mi?
Bu yıl Jonathan’ı göstermiştim sizlere, burada aldığım papağanım. Ne yazık ki gözlerimde ki rahatsızlıktan dolayı vermek zorunda kaldım, artık benimle değil. Asla bir hayvanın günahına bu şekilde girmek istemem, ancak sağlık devreye girdiği için böyle bir karar aldım. Yoksa benim yanımda olan, ölene kadar benimle kalır. Bunun en büyük örneği 4 senedir yanımda olan Sultan ve Süleyman kuşlarım gibi.
Bu yılın garip olanı ise 3 telefon kaybetmem oldu. Yani yat durunda cebimde telefonla atlamak, 2. aldığımı düşürüp parçalamak, 3. aldığımı 7 çıkacak diye satıp 7’yi alamamak gibi ???? Çokta uğraşmamak lazım, şu an 7 var ama bilin bakalım o nerede? Apple teknik servisinde, oda düştü ve kırıldı. Allah’ım çekilecek günahım mı var nedir?
Bu yılın en güzel gelişmesi ise Malta’ya taşındıktan sonra edindiğim farklı ülkelerden, farklı kültürleri olan arkadaşlarım. Gianfranco örneğin, italyan sosyal medya uzmanı. Mindaugas örneğin, litvanyalı ve front-end developer. Rachel örneğin, malta’lı ve marketing’ci. Helen mesela, ingiliz ve customer support. Ve daha niceleri, arap nargileciden tutunda, italyan dövmecisine kadar bir çok tanıdığım farklı insan var ve bu beni çok mutlu ediyor. Çünkü onlarla oturup konuşmak bile, aslında dünyada milyarlarca farklı fikrin olduğunu ortaya çıkarıyor.
Ön yargılı mı yaklaşıyorum yoksa benim çevrem mi bu şekildeydi bilmiyorum, ancak eskişehir’de sıradan insanlarla bile konuştuğunuzda duyduğunuz tek şey çoğunlukla geçim zorluğu, devlet düşmanlığı ve aşk acıları oluyor. Ancak burada bunun aksine herkesin çok farklı fikirleri var, öğrendiğim en önemli şey ise, bu adamlar kendilerini çok önemsiyorlar. Bu kadar yıl yaşadım, kendimi hiç önemsediğimi hatırlamam. Ama belki de önemsemek gerekir, önce kendimizi iyi hissetmek için bir şeyler yapmamız gerekir. Geçim derdine düşmeden cebinde paran azsa bile eğlenmesini bilmek gerekir.
“Mutluluğun parayla orantılı olmadığını anlamak için hala çok geç değil..”
Ayrıca bu yıl geçen yıl ki hedeflerimden 2’sini gerçekleştirdim. Geçen yıl yeni bir dil demiştim, ingilizce’yi öğrenmeye başladım ve ana dili ingilizce olan bir ülkede yaşıyorum. Bir diğeride 2015 kazancımı artırmaktı, geçen yıl 200+ bin üzeri kazanmıştım bu yıl bunu 400+ bin üzerine çıkardım. Ama önemli olan ne kadar kazandığın değil, kazandığınla neler yaptığındır. Bu yıl öyle zamanlar oldu ki birkaç tl’yi arar olduğum zamanlar yaşadım. Ama sonuç olarak buradayız, ve ölmedik ????
Yeni yıldan beklentim, ingilizcemi daha iyi geliştirmek. Bu yıl kazandığımdan çok daha fazlasını kazanmak. En az 70 eğitim videosu hazırlamak. En az 3 geçerli proje hazırlamak. Ve artı kendim için bir şeyler yapmaya başlamak.
Gelenekleri yerine getirip yeni yıl şarkımı şuraya bırakıyorum;
Bugün bir seriye başlamaya karar verdim. Aslında ilk bölümü çektiğimde bunun bir seri olmasını beklemiyordum ancak zaten eski PHP derslerim eskidiği için yenisini bunun ile çekebilirim.
İlk ders bir projenin altyapısı nasıl olmalı onunla ilgili. Yaklaşık 1 saatten uzun ve bir çok aksiliklerle dolu videoya aşağıdan ulaşabilirsiniz;
Güncelleme: .htaccess dosyanızda RewriteRule kuralının sonuna [QSA] ekleyin. Aksi taktirde $_GET parametrelerini çalıştıramazsınız. Örnek dosyalarda ben değişikliği yaptım, seviliyorsunuz.