Dediğiniz gibi yaptım. Veritabanı dosyasına şöyle yazdım:
mysqli_set_charset($db,"utf8");
Veritabanı tablomu da "utf8mb4_general_ci" yaptım. Yalnız şöyle bir hata alıyorum şua an.
unlink(./../../images/anasayfaresim/170698815640 ־�.CoF�~�): No such file or directory in
error.log'da ise hata şu şekilde
unlink(./../../images/anasayfaresim/170698815640\n\xd6\xbe\xef\xbf\xbd.CoF\xef\xbf\xbd~\xef\xbf\xbd): No such file or directory in
Resmin verdiği satırda da şu kodlar var.
unlink("./../../images/anasayfaresim/$resimsil");
Bazı resimlerde hata alıyorum. Ne siliyor ne de düzenleme yapabiliyorum.
Şu isimde bir resim hata çıkartmazken : "4381132274.jpg"
şu isimde bir resim çıkartıyor: "4807910204.jpg"
Tabi ki şifrelendikten sonra 21 haneli bir karaktere dönüşüyorlar her iki resim ismi.
Hatta ben size kodların hepsini koyayım. Ekleme işleminde de aynı kodlar var. Ne yapmam lazım.
<?php
if(isset($_FILES['dosya'])) {
$boyut = $_FILES['dosya']['size'];
if($boyut > (1024*1024*3)) {
echo 'Dosya 3MB den büyük olamaz.';
} else {
$tip = $_FILES['dosya']['type'];
$isim = $_FILES['dosya']['name'];
$newfilename = round(microtime(true)) . $isim;
$isimdegistir = str_replace("-","_","$newfilename");
$uzanti = explode('.', $isimdegistir);
$uzanti = $uzanti[count($uzanti)-1];
if($tip != 'image/jpeg' && $tip != 'image/png' && $tip != 'image/jpg') { ?>
<div id="uyaripenceresi"></div>
<?php
header("Location: anasayfaresimlistele.php");
} else {
$dosya = $_FILES['dosya']['tmp_name'];
copy($dosya, '../../images/anasayfaresim/' . $isimdegistir);
$anasayfaresimguncellesorgusu = "UPDATE anasayfaresim SET anasayfaresim_resim='$isimdegistir' WHERE anasayfaresim_id='$duzenlesonuc' and anasayfaresim_resim='$duzenlesilresimsonuc'";
$anasayfaresimguncellesorgu = mysqli_query($db, $anasayfaresimguncellesorgusu);
if ($anasayfaresimguncellesorgu) {
unlink("./../../images/anasayfaresim/$duzenlesilresimsonuc");
echo '<div style="margin-top:25px; text-align:center; font-size:35px;">
Düzenleme Başarıyla Gerçekleştirildi</div>';
header("Refresh:2; url=anasayfaresimlistele.php");
} else {
echo '<div style="margin-top:25px; text-align:center; font-size:35px;">
Düzenleme Başarısız. <br> Geldiğiniz Sayfaya Yönlendiriliyorsunuz.</div>';
header("Refresh:4; url=anasayfaresimlistele.php");
}
}
}
}
?>
Merhaba. Aşağıdaki şekilde veritabanına "birinciresim.jpg" olarak yazdırabiliyorum ama klasöre giden resmin adı değişmiyor. Eğer değiştirilebilirse, resmi düzenle dediğimde o resim yerine başka bir resim koyarken şu hatayı vermez diye düşünüyorum. Bir de resmi yüklerken aşağıdaki şekilde kopyalama yaparak gönderiyorum. Bu yüzden problem çıkarıor olabilir mi? Bunu nasıl düzeltebiliriz?
$isim = $_FILES['dosya']['name'];
$isimdegistir = str_replace("-","","$isim");
unlink(./../resimler/resim/resimbirinciresim.jpg): No such file or directory in
copy($dosya, '../../resimler/resim/' . $newfilename);
Şu şekilde çözdüm. Veritabanında veriyi saydırdım. Eğer veri sıfıra eşitse aqşağıdaki gibi yaptım yok eşit değilse veriyi listelettim. Bu şekilde hata vermiyor. Teşekkür ederim.
echo "https://www.facebook.com";
Menü eklerken sayfa oluşturmaktan vazgeçtim. Sorunu hallettim yani.
Merhaba arkadaşlar. Şu kodu internetten buldum, çalıştı. Yalnız bana şunların ne olduğunu anlatabilirseniz sevinirim.
$id = $listele["id"];
$ciphering = "AES-128-CTR";
$iv_length = openssl_cipher_iv_length($ciphering);
$options = 0;
$encryption_iv = '8569748526325697';
$encryption_key = "sifre alani";
echo $encryption = openssl_encrypt($id, $ciphering, $encryption_key, $options, $encryption_iv);
Mesela, openssl_cipher_iv_length : Şifre başlatma vektörü uzunluğunu alır, diyor internette. Şifre başlatma vektörü nedir?
Mesela, option ne işe yarıyor burada?
Yani çalışma mantığını anlamak için soruyorum ve ne olduklarını.
Aşağıdakileri anladım.
AES-128-CTR : Şifreleme metodu.
sifre alani : Şifrelediğimiz veriyi açmamızı sağlayan anahtar.
Şöyle anlayayım. id'yi input ile değil a tag'iyle gönderiyorum. a tag'ine encrypt yazdığımda, listele.php sayfasındaki düzenle butonum kayboluyor. Aşağıdaki şekilde.
<a href="bastakiresimduzenle.php?bastakiresimduzenle=<?php echo encrypt($bastakiresim_goster['bastakiresim_id']); ?>&bastakiresimklasordensil=<?php echo $bastakiresim_goster['bastakiresim_resim']; ?>">
<img src="icons/edit.png" title="Düzenle" />
</a>
Bir de bu fonksiyonu ben bu koda nasıl uyarlayacağım anlayamadım. Yani $string değişkenini a tag'inde nereye koyacağım echo nun arkasına mı? Yani
echo $string
şeklinde mi kullanacağım.
Söylediğim şeyler aşağıda.
listele.php
<a href="bastakiresimduzenle.php?bastakiresimduzenle=<?php
$resimid = $bastakiresim_goster['bastakiresim_id'];
$karisik_kodlar_duzenle = 'AES-128-ECB';
$sifre_duzenle = 'sifre.1000.password';
echo openssl_encrypt($resimid, $karisik_kodlar_duzenle, $sifre_duzenle);
?>&bastakiresimklasordensil=<?php
$resimsil = $bastakiresim_goster['bastakiresim_resim'];
$karisik_kodlar_duzenlesil = 'AES-128-ECB';
$sifre_duzenlesil = 'sifre.1000.password';
echo openssl_encrypt($resimsil, $karisik_kodlar_duzenlesil, $sifre_duzenlesil);
?>">
<img src="icons/edit.png" title="Düzenle" />
</a>
duzenle.php
$id_duzenlee = $_GET['bastakiresimduzenle'];
$karisik_kodlar_duzenle = 'AES-128-ECB';
$sifre_duzenle = 'sifre.1000.password';
$sifre = openssl_decrypt($id_duzenlee, $karisik_kodlar_duzenle, $sifre_duzenle);
$id_duzenlesil_sonuc = $_GET['bastakiresimklasordensil'];
$karisik_kodlar_duzenlesil = 'AES-128-ECB';
$sifre_duzenlesil = 'sifre.1000.password';
$resim = openssl_decrypt($id_duzenlesil_sonuc, $karisik_kodlar_duzenlesil, $sifre_duzenlesil);
Bir şey farkettim. Bir resmi güncelledikten sonra tekrar güncellemek istediğimde güncelleme sayfasının verileri gelmiyor. Tarayıcıda şifrelenmiş "id" görünüyor ama güncelleme yapacağım form elementleri gelmiyor.
Tayfun bey şöyle bir örnek koymuş siteye. Ben, düzenleme ve sil işlemini "a.php" sayfasında yapıyorum. "Get" metoduyla gelen id'yi düzenleme yapmak için şifreliyorum. Verileri şifreleyip düzenlemeyi yapıyorum. Sil alanına ise farklı değişkenlerle aynı kodları yazıyorum. O da çalışıyor. Sonra bilgisayarı kapatıp açtığımda bir önceki işlemleri yapamıyorum. Bir diğeri, "a.php" için kullandığım kodları "b.php" için de kullanıyorum çalışmıyor. Farklı değişkenlerle yapıyorum farklı şifre ile kullanıyorum çalışıyor. Bilgisayarı kapatıp açtığımda çalışanlar da çalışmıyor. Yani "id" şifreleyeceksem "düzenle.php" ye tıkladığımda gelen veri lazım bana. İşin içinden çıkamadım.
$data = 'prototurk.com';
$cipher = 'AES-128-ECB';
$key = 'prototurk.2021.xx1';
$encoded = openssl_encrypt($data, $cipher, $key);
$data = 'prototurk.com';
$cipher = 'AES-128-ECB';
$key = 'prototurk.2021.xx1';
$decoded = openssl_decrypt($data, $cipher, $key);
Bu sorunun devamı olarak bir soru daha soracaktım. Bir kutuya tıklıyorum. Kutunun arkaplanı yeşil oluyor ve o kutunun değeri yazıyor. 1. kutuya tıkladıysam aşağısında "1" yazıyor. 2. kutuya tıkladıysam aşağısında "2" yazıyor. Şimdi, tıkladığım kutuya tekrar tıklayınca o değer kaybolsun. Nasıl yapılabilir? Kodlar aşağıda.
var listItems = document.querySelectorAll("#ee");
const elements = document.querySelectorAll(".yuvarlaklar");
elements.forEach(function(element) {
element.addEventListener("click", function(e) {
e.target.classList.toggle("active");
listItems = document.createElement("li");
document.getElementById("ee").appendChild(listItems);
listItems.innerHTML = element.innerHTML;
})
})