@ziar değişken boş olduğu için hata veriyor. Eğer kul_yetki adlı session yoksa hata verir, varsa zaten direkt çalışır. Hata almamak için başına @ koyabilirsin.
If kontrolünde fonksiyondan sadece true yada false sonucu geliyor sen bunu bir işlem yaptırmış olmuyorsun ki. Bu şekil işini görür.
<?php if ($_SESSION['kul_yetki'] == 1) { ?>
<a href="dashboard.php">Dashboard</a>
<?php } ?>
Senin fonksiyonunla alakası yok ama tcmb bildiğim kadarıyla bir gün öncesinin kurlarını gösteriyor. Aşağıda ki örnekte anlık olarak alabilirsin, böylesinin senin için daha verimli olacağını düşündüm.
function USDtoTRY($cost){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://kur.doviz.com/api/v5/converterItems');
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER ['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$json = json_decode($result, true);
foreach($json[0] as $row){
if($row['code'] == 'USD'){
return $row['buying'] * $cost;
}
}
}
$TL = USDtoTRY(10);
Normalde böyle bir şey yok ancak preg_match ile yapılabilir diye düşünüyorum ama ne kadar sağlıklı olur tartışılır.
HTTP_REFERER ile de yapabilirsin. Yada forma bir eşsiz ID atayıp da php kısmında bunu kontrol de ettirebilirsin. Get kısmında zaten Same-origin olayı devreye giriyor, senin hostundan başkası get yapamıyor diye biliyorum.
<?php
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;
require 'PHPMailer/Exception.php';
require 'PHPMailer/PHPMailer.php';
require 'PHPMailer/SMTP.php';
$mail = new PHPMailer(true);
if ($_POST['register']) {
try {
$mail->SMTPDebug = 0;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = 'şifre';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
$mail->setFrom('[email protected]', 'ahmet');
$mail->addAddress('[email protected]', 'Alıcı Ad Soyad');
$mail->addAddress('[email protected]');
$mail->isHTML(true);
$mail->Subject = 'Üyelik işlemi';
$mail->Body = 'uzun uaf';
$mail->send();
echo 'Tebrikler! Email başarıyla gönderildi!';
} catch (Exception $e) {
echo "Ops! Email iletilemedi. Hata: {$mail->ErrorInfo}";
}
}
?>
json_decode() fonksiyonunu $jsn1 değişkenine tanımlamışsın ama foreach de direkt ham veriyi döndermeye çalışıyorsun. Ayrıca foreach de çift dolar işareti kullanmışsın ve altta echo'nun sonuna noktalı virgül koymamışsın.
En hızlı böyle yapabilirsin. Ama json çıktını düzenlemeni öneririm daha basit yapabilirsin çünkü.
<?php
$arr = json_decode(file_get_contents("https://digiturk-api.herokuapp.com/"), true);
$c = count($arr['sira']);
?>
<div class="digi-purple py-3">
<div class="container">
<div class="row">
<table class="table table-dark">
<thead>
<tr>
<th scope="col">Kanal No</th>
<th scope="col">Kanal Logo</th>
<th scope="col">Kanal Ad</th>
</tr>
</thead>
<tbody>
<?php for($i = 0; $i < $c; $i++){ ?>
<tr>
<td><?=$arr['sira'][$i]?></td>
<td><img src="<?=$arr['resimler'][$i]?>"/></td>
<td><?=$arr['kanalAdı'][$i]?></td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
</div>
</div>
Test etmedim ancak şöyle bir mantık olabilir.
Bildiğimiz üyelik sistemi gerekiyor, kişi bilgileri ile giriş yapıp video sayfasına gidecek. Giriş yapmamış kişi giriş yap sayfasına yönlendirilecek.
Vimeo videolarını embed yaparak başka bir player ile oynatabilirsin. Bu sayede playerin parametlerini sen belirlersin.
Bunu javascript ile yap ki direkt html tagları arasında gözükmesin bir nebze de olsa vimeo urlsi gizlensin. Ama bu kesin bir çözüm olamaz, kaynak linkini kesin olarak saklayamazsın. Sonuç olarak tarayıcının bu verileri okuması gerek göremediği bir şeyi okuyamaz tarayıcı.
Örneğin şu video da vimeonun kendi player kontrol kısmı kapalı (control=0 parametresi ile). Video: https://player.vimeo.com/video/265045525?controls=0
Sen bu videoyu gidip videojs, jwplayer gibi bir player ile maskeleyip kullanabilirsin.
Not: Dediğim gibi denemedim bu yöntemi çalışmayabilir.