Karşı sunucu ajax isteklerine izin vermediği için dışarıdan bu hatayı alıyorsun.
Yapabileceğin en basit çözüm ücretsiz bir proxy server kullanmak olabilir.
Ben genelde https://cors-anywhere.herokuapp.com/ bunu kullanıyorum.
Yani kodun şöyle olmalı;
$.get('https://cors-anywhere.herokuapp.com/http://application.yesilyurtavm.com/yesilyurtapi/stores.php', function(response){
console.log(response);
});
NOT: sorun sadece jquery ile ilgili, ben etiketlerini düzeltmiştim ancak tekrar etiketleri alakasız şekilde işaretlemişsin. Lütfen bir dahaki sefere daha dikkatli ol ve sadece sorunun ile alakalı etiketleri işaretle.
en popüleri jwplayer
dediğin iki işlemi de yapıyor. Ancak sanırım artık ücretli, yine de ücretsiz keyleri bulabilirsin nette.
ek olarak https://videojs.com/ var buna da bakabilirsin bu da isteklerini karşılıyor.
props
olarak gönderip alt komponentinden müdahele edebilirsin
// app.js
import { useState } from 'react'
import Search from './components/Search'
const App = () => {
const [search, setSearch] = useState('')
return (
<Search setSearch={setSearch} />
)
}
// components/Search.js
const Search = (props) => {
return (
<input onChange={e => props.setSearch(e.target.value)} />
)
}
mümkün değil, zaten bir anlamı da yok çünkü nihayetinde css compile ediyorsun sass ile.
kullanacağın her türlü css olduğu için yapamazsın.
ama en basitinden şöyle bir şey düşünebilirsin, diyelim ki php kullanıyorsun. ve bir json dosyan var;
{
"color1": "red",
"color2": "blue"
}
php tarafında bu dosyanın içeriğini okuyup css değişkeni olarak atayıp css dosyanda kullanabilirsin örneğin
<head>
<?php
$open = file_get_contents(__DIR__ . '/test.json');
$data = json_decode($open, true);
?>
<style>
:root {
--color1: <?=$data['color1']?>;
--color2: <?=$data['color2']?>;
}
</style>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
bunuda css ya da sass tarafında şöyle kullanırsın
body {
background: var(--color2);
}
.button {
background: var(--color1);
color: #fff;
}
ama dediğin şey olmaz yani doğrudan :)
@lirik, burası soru-cevap platformu. Tek ihtiyacımız olan şey kaliteli sorular, kaliteli cevaplar. İngilizce bilmiyor olabilirsin, belli ki araştırmayı, öğrenmeyi, okumayı da sevmiyorsun. O yüzden sana burada al şu kodu kullan demeyeceğim, soru sormayı öğrendikten sonra tekrar gelip burada takıldığın konularda yardım alabilirsin.
Soru sormanın adabını bilmiyorsan, şunu okumakla başlayabilirsin.
http://belgeler.org/howto/smart-questions.html
Bununla ilgili bir sürü Wordpress Plugin'i bulunuyor. User Role
diye aratarak mevcut olanlara bakabilirsin, eğer kod bilmiyorsan zaten yazman çok çok zor.
Ancak şu plugin'e bir göz at, ihtiyacını karşılayabilir.
https://tr.wordpress.org/plugins/user-role-editor/
verot.net
sınıfını kullanabilirsin.
https://www.verot.net/php_class_upload.htm
Kullanımı ise
$foo = new upload($_FILES['BlogRESIM']);
if ($foo->uploaded) {
$foo->file_new_name_body = 'resimadi';
$foo->image_resize = true;
$foo->image_convert = 'jpg';
$foo->image_x = 100;
$foo->image_y = 100;
// eğer yükseklik genişliğe göre oranlasın diyorsan alttakini açıp üstteki image_y yi kaldırabilirsin
// $foo->image_ratio_y = true;
$foo->process('/upload');
if ($foo->processed) {
echo 'resim yüklendi.';
} else {
echo 'hata : ' . $foo->error;
}
}
döküman sayfasında bir sürü örneğini bulabilirsin sınıfın kullanımıyla ilgili, aklına gelebilecek her şeyi düşünmüşler zaten
https://www.verot.net/php_class_upload_samples.htm
bir fonksiyona çevirip yazabilirsin, örneğin;
function slider($sliderId){
global $db;
$query = $db->prepare("SELECT * FROM slider WHERE slider_id = :id");
$query->execute([
'id' => $sliderId
]);
return $query->fetch(PDO::FETCH_ASSOC);
}
// kullanırkende slider idsine göre kullanacaksın örneğin
$slider1 = slider(1);
echo $slider1['slider_ad'];
$slider2 = slider(2);
echo $slider2['slider_ad'];
ikinci bir alternatifte hepsini çekip bir diziye idleri ile birlike aktarıp kullanmak olabilir. Örneğin;
function sliders(){
global $db;
$query = $db->query("SELECT * FROM slider WHERE slider_id = :id")->fetchAll(PDO::FETCH_ASSOC);
$sliders = [];
foreach ($query as $row){
$sliders[$row['slider_id']] = $row;
}
return $sliders;
}
$sliders = sliders();
// ID'si 1 olan sliderın adı
echo $sliders[1]['slider_ad'];
// ID'si 2 olan sliderın adı
echo $sliders[2]['slider_ad'];
gibi :)
@0kan87, evet gözümden kaçmış düzenledim şimdi :) string yerine 1, 2 tipide gönderilebilir nasıl daha kolayınıza geliyorsa
Öncelikle beğen-beğenmeme olayını üye olmayanlara yani herkese açık yaparsan saydırman imkansız. IP adresine göre eklesen VPN ile IP değiştirmek çok kolay, cookie tutsan cookiler silinir, session belirlesen browser kapanınca ya da session gc çalışınca sessionlar uçar ve binlerce beğeni eklenebilir.
Bu yüzden sadece üyelerin bu işlemi yaptığından emin olman lazım. Veritabanında votes
diye bir tablon olduğunu varsayalım.
kolon | tur |
---|---|
vote_id | int(11) |
vote_post_id | int(11) |
vote_user_id | int(11) |
vote_type | varchar(255) |
Ve bir post'u beğenip beğenmemeye yapacağını farz edelim. 2 butonun olacak bu aksiyon üzerine.
<button onClick="like(1, this)">Beğen <span>0</span></button>
<button onClick="dislike(1, this)">Beğen <span>0</span></button>
Burada 1
senin post id'n. artık onu php ile dinamik yazdırırsın :)
İlk olarak ilgili fonksiyonları bir oluşturalım javascrip tarafında.
function vote(postId, type, callback){
let data = {
type: type,
postId: postId
};
$.post('api.php', data, callback, 'json');
}
function like(postId, elem){
vote(postId, 'like', function(response){
if (response.error){
alert(response.error)
} else {
let span = $('span', elem)
let likes = parseInt(span.text())
span.text(likes + 1)
}
});
}
function dislike(postId, elem){
vote(postId, 'like', function(response){
if (response.error){
alert(response.error)
} else {
let span = $('span', elem)
let dislikes = parseInt(span.text())
span.text(dislikes - 1)
}
});
}
şimdi de api.php
örneğinin nasıl olacağına bakalım
<?php
$type = $_POST['type'];
$response = [];
// üye girişi yapmamışsa süreci bitir
if (!isset($_SESSION['user_id'])){
die('Request denied.');
}
switch($type){
case 'like':
$post_id = $_POST['postId'];
$user_id = $_SESSION['user_id'];
$data = [
'post_id' => $post_id,
'user_id' => $user_id,
'type' => 'like'
];
// daha önce aynı kullanıcı postu beğenmiş mi kontrol et
$query = $db->prepend('SELECT * FROM votes WHERE vote_post_id = :post_id && vote_user_id = :user_id && vote_type = :type');
$query->execute($data);
$row = $query->fetch(PDO::FETCH_ASSOC);
if ($row){
$response['error'] = 'Zaten bu konuyu beğendin.';
} else {
$query = $db->prepend('INSERT INTO votes SET vote_post_id = :post_id, vote_user_id = :user_id, vote_type = :type');
$insert = $query->execute([
'post_id' => $_POST['postId'],
'user_id' => $_SESSION['user_id'], // sessindan gelmeli
'type' => 'like'
]);
if ($insert) {
$response['success'] = 'İçeriği beğendiniz.';
} else {
$response['error'] = 'Bir sorun oluştu.'
}
}
break;
case 'dislike':
$post_id = $_POST['postId'];
$user_id = $_SESSION['user_id'];
$data = [
'post_id' => $post_id,
'user_id' => $user_id,
'type' => 'dislike'
];
// daha önce aynı kullanıcı postu beğenmiş mi kontrol et
$query = $db->prepend('SELECT * FROM votes WHERE vote_post_id = :post_id && vote_user_id = :user_id && vote_type = :type');
$query->execute($data);
$row = $query->fetch(PDO::FETCH_ASSOC);
if ($row){
$response['error'] = 'Zaten bu konuyu beğendin.';
} else {
$query = $db->prepend('INSERT INTO votes SET vote_post_id = :post_id, vote_user_id = :user_id, vote_type = :type');
$insert = $query->execute([
'post_id' => $_POST['postId'],
'user_id' => $_SESSION['user_id'], // sessindan gelmeli
'type' => 'like'
]);
if ($insert) {
$response['success'] = 'İçeriği beğendiniz.';
} else {
$response['error'] = 'Bir sorun oluştu.'
}
}
break;
}
echo json_encode($response);
ek olarak tabi posts
tablonda likes
ve dislikes
kolonları açıp sayıları orada tutabilirsin, her like ve disliketa ilgili konunun kolonlarını güncelleyebilirsin api.php
de ki ilgili alanlarda. en basit olarak böyle bir yapı kurulabilir, tabi yapıyı kendine göre düzenlemen gerekir.