session'lar sunucu taraflı oluşur, cookie'ler kullanıcı taraflı, yani manipüle edilmesi mümkündür. Ayrıca güvenlik zafiyatı doğurabilir ve cookie'ler çalınabilir. Bu yüzden oturum işlemleri SESSION ile yapılmalıdır. Sadece daha sonra girdiğinde tekrar oturum açmaması için cookie'de şifreli olarak user key ya da token gibi bir şey tutularak siteye tekrar girildiğinde bu kontrol edilir, var ise otomatik giriş yaptırılır.
oluşturduğun server içerisinde şu şekilde alabilirsin;
req.headers.referer
yani;
var http = require('http');
server = http.createServer(function(req, res){
// burada
}
işte sen güncelleme işleminden önce öyle bir eposta ya da kullanıcı adının olup olmadığını kontrol edeceksin. Kontrol ederkende user_id'si şu an ki güncellenen üyenin id'sine eşit olmayna diye bakacaksın, o zaman bu hatayı almayıp güncelleme işlemini başarıyla yapacaksın.
redirect ve flash işlemini for dışında yaparsan problem çözülebilir.
aslında en basit update işleminde şunu söylemen lazım
where user_id != '1'
burada ki 1 update yapan kullanıcının id'si, bunu yaparsan sorunun çözülür :)
getComputedStyle() metodu ile alman mümkün. Senin örneğin için ise şöyle bir kod verebilirim;
var fontSize = window.getComputedStyle(
document.getElementById('test'), ':before'
).getPropertyValue('font-size');
alert(fontSize);
Örneğin images klasörünün içinde .jpg uzantılı birden fazla arkaplan görselin olsun.
$images = [];
foreach(glob(__DIR__ . '/images/*.jpg') as $image){
array_push($images, $image);
}
$random = array_rand($images);
echo $images[$random]; // rasgele resmin
sen bi base path belirleyeceksin. Örneğin;
$path = 'var/www/html';
$url = $path . '/' . str_replace('..', null, $_GET['url']);
echo $url;
çağırırkende şöyle çağıracaksın;
http://siteadi.com/?url=app/init.php
böylece şu şekilde denese bile çalışmayacak;
http://siteadi.com/?url=../../app/init.php
Bir örneğini yaptım, inceleyip kendine göre uyarlayabilirsin;
https://codepen.io/tayfunerbilen/pen/eYmMEPb
Html kodların;
<div class="words"></div>
<div id="result"></div>
<input type="text" id="input">
css kodların;
.words {
border: 2px solid #aaa;
border-radius: 20px;
padding: 15px;
display: flex;
flex-wrap: wrap;
span {
height: 30px;
line-height: 30px;
padding: 0 15px;
border-radius: 30px;
font-size: 20px;
margin-right: 10px;
&.active {
background: #eee;
}
&.correct {
background: green;
color: #fff;
}
&.incorrect {
background: red;
color: #fff;
}
}
}
input {
margin-top: 20px;
width: 400px;
height: 40px;
line-height: 40px;
border-radius: 40px;
border: 1px solid #ccc;
}
javascript kodların;
const words = ['tayfun', 'erbilen', 'prototurk', 'test', 'şeker', 'şey'];
const wordsBox = $('.words');
let input = $('#input');
let current = 0;
$.each(words, (key, word) => {
wordsBox.append(`<span data-id='${key}'>${word}</span>`)
});
wordsBox.find('span:first').addClass('active');
input.on('keyup', function(e) {
if (e.keyCode == 32){
var elem = wordsBox
.find('span')
.eq(current);
if ($.trim($(this).val()) == words[current]){
elem
.removeClass()
.addClass('correct');
} else {
elem
.removeClass()
.addClass('incorrect');
}
current += 1;
input.val('');
if (current == words.length){
finish();
}
}
});
function finish(){
var correct = $('span.correct').length,
incorrect = $('span.incorrect').length;
$('#result').html('<b>Doğru:</b> ' + correct + '<br><b>Yanlış:</b> ' + incorrect);
}
artık window penceresi açtırmıyor tarayıcılar güvenlikten dolayı, o yüzden en fazla fullscreen butonu koyup tam ekran yaptırabilirsin o kadar :/