Saya memiliki formulir dengan input kirim. Ketika saya mengklik tombol kirim itu memanggil fungsi PHP yang memperbarui data di mysql. Semua berfungsi dengan baik sampai saya menambahkan tindakan di formulir. Dalam tindakan saya menambahkan sumber ke file unduhan dan ketika saya mengklik tombol kirim, itu hanya mengunduh file tetapi tidak memperbarui data di mysql.

<?
include "main.php";

$get->downloadCounter();
?>

<form method="post" id="form-id" action="/script/pages/files/test.rar">
        <input type="submit" value="Download" name="submit" id="download_btn_submit" class="download_btn icon_download_btn">
        </form>



// main.php

<?

include 'db.php';

class getData extends Connection {


    public function downloadCounter() {

            //protect from people getting other files
            if(isset($_POST["submit"])){
            $id = $_GET['id'];

            $sql="update scripts set downloads=downloads+1 where id=:id";
            $data = $this->connect()->prepare($sql);
            $data->execute(array(':id'=>$id));

            header('Location: '.$_SERVER['REQUEST_URI']);

    }
}

}

$get = new getData();

?>

// page.php
-1
Denis L 25 Oktober 2019, 22:38

1 menjawab

Jawaban Terbaik

Anda tidak dapat menggunakan atribut tindakan seperti itu, karena dalam kasus Anda, formulir perlu mengirimkan data ke skrip Anda, bukan ke file .rar. Yang dapat Anda lakukan adalah menambahkan input tersembunyi dengan jalur file yang akan diunduh:

<form method="post" id="form-id">
    <input type="hidden" name="fileToDownload" value="/script/pages/files/test.rar">
    <input type="submit" value="Download" name="submit" id="download_btn_submit" class="download_btn icon_download_btn">
</form>

Dan kemudian di main.php Anda, ganti ini:

header('Location: '.$_SERVER['REQUEST_URI']);

Dengan ini:

header('Location: '.$_POST['fileToDownload']);
0
François Huppé 25 Oktober 2019, 19:59