Evet, bunu çok geç öğrendim. Hali hazırda kaydedilmiş veriler olduğu için verdiğim örnekteki gibi çözmek zorunda kaldım.
SELECT * FROM `siparisler` WHERE JSON_EXTRACT(REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(`musteriler`,
'\\u00e7', 'ç'),
'\\u011f', 'ğ'),
'\\u0131', 'ı'),
'\\u00f6', 'ö'),
'\\u015f', 'ş'),
'\\u00fc', 'ü'),
'\\u00c7', 'Ç'),
'\\u0130', 'İ'),
'\\u011e', 'Ğ'),
'\\u00d6', 'Ö'),
'\\u015e', 'Ş'),
'\\u00dc', 'Ü'), '$[*].isim') LIKE '%Hürüm%'
Çözümü böyle bulabildim. Daha kısa bi çözümü olan varsa bilgi verebilir.
Instagramdan yaz hocam çözdüm ben o sorunu, instagram => @enes.php
Merhaba dostum,
Sorunu şöyle yanıtlayabilirim. Üyeler tablona iki tane sütun ekleyeceğiz. uye_onay
ve uye_token
olarak. Sitende üye kaydı yapıldığı zaman uye_onay
otomatik olarak 0 değerini alacaktır, uye_token
tablosuna ise istediğin uzunlukta eşsiz bir token kodu oluşturup bu token kodunu mail yoluyla üyeye göndereceğiz. Sana kendi kullandığım token oluşturma fonksiyonumu veriyorum.
function tokengenerator($uzunluk)
{
$char = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" . "abcdefghijklmnopqrstuvwxyz" . "0123456789";
$str = "";
while (strlen($str) < $uzunluk) {
$str .= substr($char, (rand() % strlen($char)), 1);
}
return ($str);
}
Üye kaydı oluşturulduğu anda bir değişkene token kodumuzu aldıralım. Mesela $user_token = tokengenerator(50);
şeklinde 50 karakterli bir token kodu oluşturduk. Bu oluşturduğumuz token kodu veritabına yazıldı. Üye işlemi başarılı olursa $user_token
değişkenini mail yoluyla kullanıcıya göndermeliyiz. Örnek olarak https://ornek.com/aktivasyon.php?token=[oluşturulan_token]
şeklinde bir link olarak kullanıcıya posta yoluyla gönderildik. Şimdi yapmamız gereken aktivasyon.php
dosyasımızı yazmak.
<?php
if(isset($_GET['token'])){
$query = $db->query("SELECT * FROM uyeler WHERE uye_token = '{$_GET['token']}'")->fetch(PDO::FETCH_ASSOC);
if($query){
$onay = $db->prepare("UPDATE uyeler SET
uye_onay = :uye_onay
WHERE uye_token = :uye_token");
$update = $onay->execute(array(
"uye_onay" => 1,
"uye_token" => $_GET['token']));
} else {
die("Gerçersiz istek yapıldı!");
}
}
?>
Evet şuan üye onaylama işlemimiz tamamlandı. Üye sayfalarının başında bir kontrol işlemi gerçekleştirmen gerekmektedir. Örneğin üye bilgileri $user_info
değişkeninde tutulsun. Her sayfanın başına şu kodun yazılması gerekiyor.
if($user_info['uye_onay'] == 0){
header("Location: e-posta-dogrula.php");
}
Bu kod ile eğer üyelik onayı yoksa e-posta-dogrula.php
dosyasına bir yönlendirme yapıp üyeyi uyarabilirsin. Kodlarımda bir hata olabilir ama mantığını anladıysan çözümünü bulursun :)
İyi çalışmalar dilerim
Merhaba dostum,
Sorunu şöyle yanıtlayabilirim. Mesela ben kullanıcı 1'im. Benim user_id
verim ise $user_info['user_id']
değişkeni içinde tutulsun.
Şimdi ben kullanıcı 2'yi takip ettim diyelim. Şöyle bir veritabanımız olsun:
takip_id | takip_eden | takip_edilen
-- | -- | --
1 | 1 | 2
Bu tablodan anlaşılan şu, 1. kullanıcı 2. kullanıcıyı takip ediyor. Artık elimizde takip ettiğimiz kişilerin verileri var. Buna göre ana sayfamızı ekrana yazdırabiliriz. Paylaşımların tutulduğu örnek bir veritabanı çizelim.
paylasim_id | paylasan_uye | paylasim_gorseli | paylasim_yazisi |
---|---|---|---|
1 | 2 | test.jpg | Bu 2. kullanıcının paylaşım örneğidir |
2 | 3 | test_2.jpg | Bu 3. kullanıcının paylaşım örneğidir |
3 | 1 | test_3.jpg | Bu 1. kullanıcının paylaşım örneğidir |
Burada INNER JOIN
kullanarak sadece takip ettiğimiz kullanıcıların içeriklerini ekrana getireceğiz. Sorgumuzu yazalım.
$query = $db->query("SELECT * FROM `paylasimlar` INNER JOIN `takip_edilenler` ON paylasimlar.paylasan_uye=takip_edilenler.takip_edilen WHERE takip_edilenler.takip_eden = ".$user_info['user_id']."", PDO::FETCH_ASSOC);
print_r($query);
Bu şekilde sadece takip ettiğimiz kişilerin paylaşımlarını görüntüleyebiliriz. Kodlarımda hata olabilir. Ben denemesini phpmyadmin üzerinden yaptım fakat sende bir deneyebilirsin.
İyi çalışmalar dilerim :)