【问题标题】:How to send the user to a new URL?如何将用户发送到新的 URL?
【发布时间】:2016-11-13 10:55:54
【问题描述】:

这是我目前的URL

我已经有这个新项目有一段时间了,我想知道是否:

  1. 有一种方法,当用户点击小工具时,它会将他发送到 ....cat=gadgets,它还会记住以前的选择
  2. 如何将这个看起来很糟糕的下拉列表变成更吸引人的东西,比如收音机或只有两个基本按钮。

我的代码:

<div id="advanced-search">
    <form action="<?php bloginfo('url');?>/recipes" method="GET" id="searchF1">
        <?php
        $searched_term = get_query_var('recipe_search');
        if (empty($searched_term)) {
            $searched_term = isset($_GET["search"]) ? $_GET["search"] : "";
        }
        ?>
        <input id="sfield" type="text" name="search" placeholder="keywords" <?php if (!empty($searched_term)) {echo 'value="'.$searched_term.'"';} ?>>
        <select id="img" name="images">
            <option value="1" <?php if($_GET["images"]=='1'){ echo 'selected="selected"';} ?>>with pictures</option>
            <option value="0" <?php if($_GET["images"]=='0'){ echo 'selected="selected"';} ?>>without pictures</option>
        </select>
        <div id="time-side">
            <!--<small>Published time</small>-->
            <input type="text" id="from-side" name="from" placeholder="Start date">
            <input type="text" id="to-side" name="to" placeholder="End date">
        </div>
        <input type="submit" value="Tech">
        <input type="submit" value="Gadgets">
    </form>
</div>

【问题讨论】:

  • 您的页面似乎受到SQL Injection 的攻击。
  • 您可以在会话中存储上一个类别
  • 我该如何存储它们?
  • 要在客户端存储数据而不是使用会话所需的 cookie,请查看此处w3schools.com/html/html5_webstorage.asp 和此处stackoverflow.com/questions/1981673/…
  • 感谢您提供信息,但我仍然不明白如何根据用户选择的内容将用户发送到自定义 url,因为我已经尝试过但没有成功。我的问题是我到底需要更改我的代码才能使其正常工作?

标签: php html url


【解决方案1】:

您可以通过几种不同的方式将数据保存在多个页面上。

  1. url:你可以通过url的传输数据,像这样:example.com/index.php?id=12345然后你可以通过$_GET得到id,像这样$_GET['id']
  2. 会话您可以在会话中保存一个值,这可能是保存以前数据的最佳选择。您可以像这样保存一个值:$_SESSION["key"] = "value";,然后您可以像这样在您的网站上的任何位置访问该值:$_SESSION["key"]。非常好和简单。

  3. cookies 您可以像使用$_SESSION 一样存储cookie,但现在它可以保存在用户计算机上,只要您愿意。如果您想使用它,请阅读manual

因此,在您的情况下,您可以通过 url 发送您的 catagory 信息。像这样:example.com/file.php?catagory=toyota。要在您的 php 代码中获取该数据,您可以这样做:$_GET['catagory']

上一节数据的存储

$_SESSION["previoussection"] = "some value";

您以后可以像这样访问它: $_SESSION["previoussection"] 你会得到"some value"

【讨论】:

    【解决方案2】:

    试试这个:

    <?php
     session_start();//starting session
    $searched_term = isset($_GET["search"]) ? filter_var($_GET["search"],FILTER_SANITIZE_FULL_SPECIAL_CHARS) : "";
    if(!empty($search_term)){
    
        $_SESSION = array();//emptying session for putting new data
        $_SESSION['previous'] = $search_term;//add the new search term to the session with previous key
    }else{
    
        if(!empty($_SESSION['previous'])){//if session is not empty
            $search_term = $_SESSION['previous'];//put the old data to the search term variable
        }   
    }
    
    ?>
        <div id="advanced-search">
           <form action="recipes" method="GET" id="searchF1">                
           <input id="sfield" type="text" name="search" placeholder="keywords" <?php if (!empty($searched_term)) {
          echo 'value="'.$searched_term.'"';} ?>>
    
            <input type="radio" name="images" value="1" <?php if(isset($_GET["images"]) && $_GET["images"]=='1'){ 
                    echo 'Checked';} ?>>with pictures</option>
              <input type="radio" name="images" value="0" <?php if(isset($_GET["images"]) && $_GET["images"]=='0'){ 
                    echo 'checked';} ?>>without pictures</option>
            </select>
             <div id="time-side">
                  <input type="text" id="from-side" name="from" placeholder="Start date">
                  <input type="text" id="to-side" name="to" placeholder="End date">
              </div>
               <input type="submit" name="Tech" value="Tech">
               <input type="submit" name="cat" value="Gadgets">
              </form>
         </div>
    

    你有两个按钮 Tech 和 Gadgets,所以为了在 url 中发送你的方式,你需要名称值对:

           <input type="submit" name="Tech" value="Tech">
           <input type="submit" name="cat" value="Gadgets">
    

    【讨论】:

    • 警告:session_start(): 无法发送会话 cookie - 标头已由(输出开始于 /var/www/clients/client1/web2/web/wp-includes/formatting.php:5011
    • 我使这些功能正常工作,但在我的侧边栏上它一直显示警告。无论如何我可以让它们消失吗?
    • 将会话开始放在脚本的开头。
    • 它在文件的开头,但警告一直显示。有没有办法抑制它?
    • 试试这个:>带图片 >没有图片
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 2023-03-26
    • 2014-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多