簡體   English   中英

CodeIgniter通過uri段編碼字符串?

[英]CodeIgniter encode string through uri segment?

我是Codeigniter的新手,正在向網站添加搜索功能,並且有兩個問題。

  1. 我將如何提交表單,以便將其作為uri段發送(如查詢字符串)? 我之前通過提交post並在uri段中將其重定向到url來做到這一點。 但是有更好的方法嗎?
  2. 如何通過uri段發送字符串(例如完全由用戶生成的搜索查詢)? 我嘗試了urlencode,但仍有某些不允許的字符。 我想保留大部分查詢內容(因此很容易在歷史記錄中找到它,所以沒有base64_encode)。 有什么想法嗎? 有內置的功能嗎?

謝謝您的幫助,麥克斯

您將使用JavaScript形成URL,如下所示:

<form onsubmit="window.location.href='/search/'+encodeURIComponent(document.getElementById('search_query').value);return false">
    <input id="search_query" type="text" />
    <input type="submit" />
</form>

編輯:上面的答案將由於CodeIgniter的URI過濾器而無法工作。 但是,根據我對1.7版的經驗,如果傳遞多個GET參數,則可以使用$ _REQUEST數組檢索它們。 這將完全繞過URI過濾器。 這樣做:

<form action="/search">
    <input name="x" type="hidden" />
    <input name="q" type="text" />
    <input type="submit" />
</form>

然后使用$ _REQUEST ['q']進行搜索。 希望這對您有用。

  1. 是。 使用method="get"創建一個表單。
  2. 如果如上所述設置表單,則無需擔心編碼請求。

例:

<form action="example.php" method="get">
  <input type="text" name="search" />
  <input type="submit" value="Search" />
</form>

更新 :以“ CodeIgniter”方式生成表單:

echo form_open('email/send', array('method' => 'get'));

如果您需要使用類似

index.php?c=search&m=search&q=wow

而不是CI的默認URI段

您必須啟用查詢字符串。 您可以通過在

 application/config.php

$config['enable_query_strings'] = FALSE;

並將其更改為

$config['enable_query_strings'] = TRUE;

然后,您將可以使用查詢字符串。

但是mots CI人更喜歡不使用查詢字符串,我不確定為什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM