• 20-07-2019, 23:31:19
    #10
    htaccess ile tüm requestleri tek dosyaya yönlendirin örneğin index.php
    daha sonra burada session'a random isim kaydedin, örneğin
    $_SESSION["formAction"]=rand(100000,99999999);
    daha sonra form kısmında bunu echo ile yansıtın;
    <form method="POST" action="<?php echo $_SESSION["formAction"]; ?>.php">
    ..... geri kalan kodlar

    daha sonra form post kontrol kısmında şöyle kontrolünüzü yapın;
    if($_SERVER["REQUEST_URI"]===$_SESSION["formAction"].".php"){
    if(isset($_POST["submit"])){
    // kodlarınızın devamı
    }
    }

    mantık böyle gerisi size kalmış. Yalnız eğer güvenlik için yapıyorsanız güvenliğe pek faydası olacağını sanmam. Güvenlik için csrf token vs daha iyi olur. Hatta belki bir captcha en iyisi olabilir. Yine farklı hashing algoritmaları geliştirmek de bir çözüm olabilir. Örneğin secret key ile request time'ı request uri yi ayrı ayrı birleştirip hash haline getirmek olabilir.
  • 20-07-2019, 23:44:29
    #11
    bu işlemi yapmaktaki amacınızı söylerseniz belki daha mantıklı bir çözüm üretebiliriz
  • 20-07-2019, 23:57:05
    #12
    edit: aşağıdaki şekilde aynı anda 2 kişi sayfaya girdiğinde sorun olacağından bu mesajı pek dikkate almayınız

    son dosya adını eğer veritabanına vs kaydederseniz. rename komutu ile eski dosya adını her seferinde değiştirerek yapabilirsiniz. denemedim ama çalışacağını düşünüyorum

    örneğin
    $eskidosya="veritabanından çekilen dosya adı";
    $random = rand(0,99999);
    rename("$eskidosya", "yenidosya-$random.php");
    <form action='<?php echo "yenidosya-$random";?>.php'


    bu form action ile gönderdiğiniz dosyada işlemler tamamlandıktan sonra en sonunda tekrar dosya adını değiştirip veritabanına o şekilde kaydederseniz
    hiç bir şekilde yeni dosya adına erişilemez.
  • 21-07-2019, 00:11:24
    #13
    Üyeliği durduruldu
    hocam en mantıklı olan get methodu ile almanızdır yoksa htaccess ile yapabilirsiniz .
    bence get methodu ile almanız daha mantıklı ve stabil olacaktır ya da @CanOffline; hocamın dediği gibi yapabilirsiniz her random link için random dosya oluşturabilirsiniz .
  • 21-07-2019, 00:14:27
    #14
    crepix adlı üyeden alıntı: mesajı görüntüle
    hocam en mantıklı olan get methodu ile almanızdır yoksa htaccess ile yapabilirsiniz .
    bence get methodu ile almanız daha mantıklı ve stabil olacaktır ya da @CanOffline; hocamın dediği gibi yapabilirsiniz her random link için random dosya oluşturabilirsiniz .
    aslında arkadaşın ne yapmaya çalıştığını anlasaydık daha mantıklı şeyler üretecektik te
  • 21-07-2019, 18:01:32
    #15
    Bir kullanıcının işlemi bitmeden bir başka kullanıcı sayfayı açarsa dosya ismi yine değişir ve bir önceki kullanıcı formu submit ettiğinde 404'e düşer. Konu sahibi bot vb şeylerden korunmak amacıyla böyle bir şey istiyor olabilir. Şu makale işinizi çözebilir. https://thisinterestsme.com/php-csrf-protection/

    U_uR adlı üyeden alıntı: mesajı görüntüle
    son dosya adını eğer veritabanına vs kaydederseniz. rename komutu ile eski dosya adını her seferinde değiştirerek yapabilirsiniz. denemedim ama çalışacağını düşünüyorum

    örneğin
    $eskidosya="veritabanından çekilen dosya adı";
    $random = rand(0,99999);
    rename("$eskidosya", "yenidosya-$random.php");
    <form action='<?php echo "yenidosya-$random";?>.php'


    bu form action ile gönderdiğiniz dosyada işlemler tamamlandıktan sonra en sonunda tekrar dosya adını değiştirip veritabanına o şekilde kaydederseniz
    hiç bir şekilde yeni dosya adına erişilemez.
  • 21-07-2019, 19:05:19
    #16
    bayGaReZ adlı üyeden alıntı: mesajı görüntüle
    Bir kullanıcının işlemi bitmeden bir başka kullanıcı sayfayı açarsa dosya ismi yine değişir ve bir önceki kullanıcı formu submit ettiğinde 404'e düşer. Konu sahibi bot vb şeylerden korunmak amacıyla böyle bir şey istiyor olabilir. Şu makale işinizi çözebilir. https://thisinterestsme.com/php-csrf-protection/
    evet doğru söylüyosunuz bunu düşünmedim ben