Merhaba,
Bazı video siteleri, engelleme önlemleri olarak, HTTP 412 hata kodu gibi birçok hata kodu kullanabilir. Ancak, kodunuzda 412 hatası olması, bu hatanın sebebini veya bu site özgü bir engelleme politikasının bir nedenini işaret etmektedir.
412 hatası, istekte bulunan sunucunun, istekte belirtilen ön koşulların yerine getirilmediğini belirtmek için bir yanıt olarak gönderdiği bir hata kodudur. Bu ön koşullar, istek başlıklarında belirtilen bazı özellikler veya belirli bir istek metodu olabilir.
Kodu incelediğimde, REMOTE_ADDR ve HTTP_X_FORWARDED_FOR gibi bazı HTTP başlıklarını ayarlamaya çalıştığınızı görüyorum. Ancak öncelikle, bu HTTP başlıklarının yeterli olmayabileceğine ve bu sitelerin engelleme önlemlerinin çok daha sofistike olabileceğine dikkat etmek gerekir.
Site özgü engelleme önlemlerini kırmak adına script yada bot yazmak genellikle hukuka aykırıdır. Bu nedenle, öncelikle video sağlayıcısının API’sını kullanmayı veya kullanıcının sistemindeki uygun resmi uygulamaları kullanmayı deneyebilirsiniz.
Ancak, kodunuzu test etmek ve bir çözüm bulmak için yapabileceğiniz bazı olası adımları şunlar olarak sıralayabilirim:
1- CURLOPT_VERBOSE ayarını devre dışı bırakarak kodunuzu daha az verbose (ayrıntılı) hale getirin.
2- CURLOPT_FOLLOWLOCATION ayarını devre dışı bırakarak, curl’un otomatik yönlendirmeleri takip etmemesini sağlayın.
3- CURLOPT_USERAGENT ayarını, web tarayıcısının varsayılan kullanıcı etkenliğine benzer bir değerle değiştirin.
4- Proxy ayarlarını CURLOPT_PROXY, CURLOPT_PROXYPORT ve CURLOPT_PROXYTYPE ayarları kullanarak değiştirerek, farklı bir IP adresi veya bölge üzerinden deneyin.
5- curl_error() işlevi aracılığıyla curl tarafından döndürülen hatayı yakalayarak, hatayı daha ayrıntılı bir şekilde inceleyin.
Özetle belirtmek gerekirse, 412 hatası almanız, site yapısındaki değişiklikler, engelleme önlemleri veya HTTP isteği nedeniyle oluşabilir. Yukarıdaki önerileri denemenizi öneririm veya mevcut yöntemle uğraşmak yerine, sitenin API’sine erişim sağlamaya çalışın.
Şöyle bir çözüm önerim var:
Güncelleme işleminin başarı durumunda tamamlanması için bir geri bildirim sağlayın.
Bu geri bildirimi takip eden hazır fonksiyon sayesinde, tablonun yenilenmesi için bir zamanlayıcı kurun.
Örneğin kodunuzu şu şekilde güncelleyebilirsiniz:
$.ajax({
type: "POST",
url: "sepetguncelle.php",
data: siparis,
dataType: 'json',
success: function(data) {
if (data) {
$(obj).removeClass('bg-danger');
$(obj).addClass('bg-success');
// Güncelleme işlemi başarılıysa, tablonun 2 saniye sonra yenileneceği zamanlayıcıyı kurun
setTimeout(function() {
// Sepet tablosunun yeniden yüklenmesi gerekiyor
location.reload();
}, 2000);
}
}
})
Yukarıdaki JavaScript kodundaki setTimeout() işlevi, verilen süre (microseconds cinsinden) sonunda verilen bir işlevi (burada sayfa yenileme işlemini) tetiklemek için kullanılır.
Bu şekilde, güncelleme işlemi tamamlanır tamamlanmaz 2 saniye içinde tablonun güncellenmesi için bir zamanlayıcı oluşturulacaktır. Bu sayede, herhangi bir gecikme olmadan anlık olarak güncellenmiş sepetteki değişiklikleri görebilirsiniz.
Merhaba,
Bir barkod okuyucu cihazından gelen verileri web sayfasındaki bir inputa aktarmanın birkaç farklı yolu vardır. En yaygın iki yöntem aşağıda açıklanmıştır:
Barkod okuyucu cihazını klavye olarak kullanarak veri gönderme: Birçok barkod okuyucu, verileri klavye girişi olarak gönderir. Bu nedenle, barkod okuyucunuzu, bir input alanı seçildiğinde otomatik olarak klavye moduna girmesi için ayarlayabilir veya barkod okuyucunuzdan veri okumadan önce bir input alanına tıklayabilirsiniz. Ardından barkod okuyucunuz, barkodu okuduğunda, okunan veri otomatik olarak input alanına yazılacaktır.
Barkod okuyucu cihazından veri okuyarak gönderme: Birçok barkod okuyucu SDK’ları veya kütüphaneleri ile birlikte gelir. Bu nedenle, barkod okuyucunuzla birlikte gelen SDK’ları kullanarak, barkodu okunduğunda okunan verileri direkt olarak web sayfanızın JavaScript koduna aktarabilirsiniz.
Eğer barkod okuyucunuzla birlikte doğrudan bir SDK sağlanmıyorsa, birkaç JavaScript kütüphanesi kullanarak da barkod okuyucu verilerini alabilirsiniz. Örnek olarak, QuaggaJS kütüphanesi kullanılabilir. QuaggaJS JavaScript tabanlı bir barkod tarayıcısıdır ve barkod okuyucudan gelen verileri alabilir. Bu kütüphanenin kullanımı oldukça kolaydır ve web sayfanızda JavaScript kodu yazarak barkod okuyucudan alınan verileri hızlı bir şekilde işleyebilirsiniz.
İster klavye girişi, ister barkod okuyucunun SDK’ları veya JavaScript kütüphaneleri kullanarak, bir input alanından gelen verileri web sayfanıza aktarabilirsiniz. Bu veriler, sunucuya gönderilmeden önce JavaScript ile işlenebilir veya bir HTML formu aracılığıyla sunucuya gönderilebilir. Sunucu tarafında, PHP veya başka bir dil kullanarak form verilerini işleyebilir ve kaydedebilirsiniz.
Bu işlemin server-side ya da client-side olduğu bir eklenti gerektirmez. Sunucunuzda Apache veya başka bir web sunucusu kullansanız bile, bu işlem doğrudan JavaScript ile yapılabilir. Bir input alanına gelen veriler, sunucuya HTTP POST talebi yoluyla gönderilir.
Örnek olarak alabileceğiniz kod:
<input type="text" id="barkod-input"/>
// QuaggaJS kütüphanesini yükleyin
// https://serratus.github.io/quaggaJS/
Quagga.init({
inputStream : {
name : "Live",
type : "LiveStream",
constraints: {
width: 640,
height: 480,
facingMode: "environment"
}
},
decoder : {
readers : ["ean_reader"]
}
}, function(err) {
if (err) {
console.log(err);
return
}
console.log("Barkod okuma başarılı. Bekleniyor.")
Quagga.start();
});
// Barkod okunduğunda yapılacak işlemler
Quagga.onDetected(function(result) {
console.log("Barkod okundu: " + result.codeResult.code);
// Okunan barkodun değerini input alanına yazdır
document.getElementById("barkod-input").value = result.codeResult.code;
// Barkod okumayı durdur
Quagga.stop();
});
Bu örnekte, QuaggaJS kütüphanesi kullanılarak barkod okuyucudan gelen veriler bir input alanına yazdırılır. Quagga.init fonksiyonu kullanarak, barkod okuyucunun özelliklerini ve hangi barkod tiplerinin okunacağını ayarlayabilirsiniz. Quagga.onDetected fonksiyonu, barkod okunduğunda yapılacak işlemleri tanımlar. Barkod okunduğunda, JavaScript kodu ile input alanına yazdırılır ve okumanın durdurulduğundan emin olmak için Quagga.stop() fonksiyonu çağrılır.
Umarım bu yardımcı olur. İyi çalışmalar!
Merhaba,
İstatistik kaydetmek için verileri bir veritabanında saklamanız önerilir. Veritabanı kayıtları daha fazla veri işleme ve saklama özelliği sunarlar. Günlük, aylık, 3 aylık gibi periyotlara göre istatistik almak için veritabanınızda bir veya birkaç tablo oluşturabilirsiniz.
Tablolarınız en azından aşağıdaki alanları içermelidir:
Birincil anahtar - Bu benzersiz bir tamsayı veya birimleştirilmiş tarih formatında olabilir.
Tarih - Kaydın yaratıldığı tarihi içeren zaman damgası.
İstatistik verileri - Günlük, aylık, 3 aylık veya diğer periyodlara göre toplanan bilgiler.
Örneğin, aşağıdaki gibi bir tablo oluşturabilirsiniz:
CREATE TABLE `istatistik` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`tarih` date NOT NULL,
`ziyaretler` int(11) NOT NULL DEFAULT '0',
`kullanicilar` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `tarih` (`tarih`)
) ENGINE=InnoDB;
Bu tabloda tarih alanı benzersiz bir şekilde tanımlandığı için her güne bir kayıt oluşturursunuz ve o gün için ilgili istatistik verilerini kaydedersiniz. Bu tabloya veri eklemek için, PHP kodunuzda şu gibi bir kod kullanabilirsiniz:
$tarih = date('Y-m-d');
$ziyaretler = 100; // doldurulacak gerçek veriler burada
$kullanicilar = 50; // doldurulacak gerçek veriler burada
$sql = "INSERT INTO istatistik (tarih, ziyaretler, kullanicilar) VALUES ('$tarih', '$ziyaretler', '$kullanicilar')";
$db->query($sql);
Daha sonra, aktif periyotların istatistiklerini almak için veritabanı sorguları kullanabilirsiniz. Aşağıdaki örnek, son 30 gün boyunca ziyaretçi sayısını almak için bir sorgu kullanır.
SELECT sum(ziyaretler) as ziyaretler FROM istatistik WHERE tarih >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)
Bu sorgu sonucu, son 30 gün boyunca kaydedilen tüm ziyaretleri toplayacak ve sonucu ziyaretler olarak geri verecektir. Sorgularınızı periyodunuza ve ihtiyaçlarınıza göre düzenleyebilirsiniz.
Umarım bu yardımcı olur. İyi çalışmalar!
Merhaba, bunun için padding-bottom kullanabilirsiniz. Yuvarlak div’iniz için border-radius özelliğini kullanarak yuvarlak oluşturabilirsiniz. Ardından padding-bottom özelliğine yüzde olarak bir değer atayabilirsiniz. Bu değer, div’inizin genişliğinin yüzdesi olarak ayarlanabilir. Bu sayede, genişlik küçüldükçe dikey yükseklik de orantılı olarak küçülecektir.
Örneğin, aşağıdaki CSS kodu ile 4:3 oranında bir yuvarlak div oluşturabilirsiniz:
div {
width: 33%;
border-radius: 50%;
padding-bottom: 75%; /* 4:3 oranı için */
}
Bu şekilde, yuvarlak div’iniz her ekrana göre doğru şekilde ölçeklenecektir. Eğer farklı bir oran kullanmak isterseniz, padding-bottom özelliğindeki yüzde değerini değiştirebilirsiniz.