Сохранить текущую ссылку в Mysql

Discussion in 'PHP' started by ceg, 30 Mar 2021.

  1. ceg

    ceg New Member

    Joined:
    2 Aug 2011
    Messages:
    27
    Likes Received:
    4
    Reputations:
    0
    Всем привет!

    Пишу кнопку:
    Code:
    <a href="admin/orders?siralama_link=<?=$_SERVER['REQUEST_URI'];?>">save link</a>
    Пишу обработку кнопки:
    PHP:
    if($_GET["siralama_link"]!=""):
                
    $updatesiralama $conn->prepare("UPDATE settings SET order_siralama_link=:order_siralama_link WHERE id=:id ");
                
    $updatesiralama->execute(array("order_siralama_link"=>$_GET["siralama_link"],"id"=>1));
                
    header("Location:".site_url("admin/orders"));
            endif;
    Если ссылка вида: admin/orders/1/all, то в базу и сохраняется эта строка.

    Если ссылка вида: admin/orders/1/all?mode=manuel,
    то в базу сохраняется строка до "?", а остальная часть отсекается, хотя, наведя курсор на кнопку, видно, что ссылка передается полностью: http://xxx/admin/orders?siralama_link=/admin/orders/1/all?mode=manuel

    Вопрос такой: почему не сохраняется в Mysql части ссылки, начиная с "?". И самое главное - что же в этом случае можно придумать?

    Спасибо, что прочитали :)
     
    #1 ceg, 30 Mar 2021
    Last edited: 30 Mar 2021
  2. 1n0y

    1n0y Active Member

    Joined:
    9 May 2009
    Messages:
    273
    Likes Received:
    276
    Reputations:
    2
    тут проблема до строки "if($_GET["siralama_link"]!=""):", а не после. допиши перед кодом echo $_GET["siralama_link"]
     
  3. ceg

    ceg New Member

    Joined:
    2 Aug 2011
    Messages:
    27
    Likes Received:
    4
    Reputations:
    0
    Ушел в этом случае от $_GET совсем.
    Поставил сам обработчик непосредственно в условиях создания ссылок вместо отдельного вывода кнопки, чтобы при кликах по кнопкам текущая ссылка сразу уходила в базу.
    Эта необходимость возникла, чтобы при редактировании определенных блоков возврат осуществлялся на ту же страницу посредством header.
    Вопрос закрыт.
     
  4. Skofield

    Skofield Elder - Старейшина

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    386
    Reputations:
    58
    Не вникал особо, но из первой же вставки примера кода видно, что будет произведена передача данных по протоколу HTTP методом GET при переходе по ссылке.
    А для целостной и корректной передачи данных по протоколам лучше передаваемые данные кодировать. Например в php это может быть функция urlencode либо base64 (base64_encode с дополнительной обработкой спецсимволов при передаче url данных: https://www.php.net/manual/ru/function.base64-encode.php#103849).
     
    ceg and K800 like this.