2014-10-28 2 views
0

я имею на файл (search.php), который использует переменную, которая принимается следующим образом:Перенаправление с переменной формы не работает должным образом

session_start(); 
if (isset($_POST['Search'])){ 
    $_SESSION['Search'] = $_POST['Search']; 
} 

Форма:

<form id="searchbox" action="/search.php" method="post"> 
     <input id="search" name="Search" type="text" placeholder="Search Products"> 

    <input id="submit" type="submit" value="Search" ></form> 

так это представляет собой

у меня есть следующие переадресовывает на месте:

rewritecond %{THE_REQUEST} \s/+search\.php? [NC] 
rewriterule^/Search/? [R=301,L] 
rewritecond %{REQUEST_FILENAME} !-d 
rewritecond %{REQUEST_FILENAME} !-f 
rewriterule ^Search/?$ /search.php? [L,QSA] 

rewritecond %{THE_REQUEST} \s/+search\.php\?pageNum_RS_Search=([^\s&]+)&totalRows_RS_Search=([^\s&]+) [NC] 
rewriterule^/Search/%2/%1? [R=301,L] 
rewritecond %{REQUEST_FILENAME} !-d 
rewritecond %{REQUEST_FILENAME} !-f 
rewriterule ^Search/([^/]+)/([^/]+)/?$ /search.php?pageNum_RS_Search=$2&totalRows_RS_Search=$1 [L,QSA] 

Что переписывает его search.php для поиска/и поискового вызова для поиска/12/1 Это то, что я хочу, чтобы он делал.

Проблема заключается в том, что поиск выполняется, переменная $ _POST ['Search'] не используется. Без переадресаций на место он отлично работает. Любая помощь приветствуется

Это скрипт для пейджинга и Поисковый запрос:

$maxRows_RS_Search = 7; 
$pageNum_RS_Search = 0; 
if (isset($_GET['pageNum_RS_Search'])) { 
    $pageNum_RS_Search = $_GET['pageNum_RS_Search']; 
} 
$startRow_RS_Search = $pageNum_RS_Search * $maxRows_RS_Search; 


$colname_RS_Search = "-1"; 
if (isset($_SESSION['Search'])) { 
    $colname_RS_Search = $_SESSION['Search']; 
} 
mysql_select_db($database_dconn, $dconn); 
$query_RS_Search = sprintf("SELECT * FROM products WHERE (Category LIKE %s OR products.Manufacturer LIKE %s OR products.Model LIKE %s OR products.Color LIKE %s) AND Category!= 'Stage Pianos' AND Category!= 'Recent Pianos' AND Category!= 'Recent Keyboards' AND hidden ='no'", GetSQLValueString("%" . $colname_RS_Search . "%", "text"),GetSQLValueString("%" . $colname_RS_Search . "%", "text"),GetSQLValueString("%" . $colname_RS_Search . "%", "text"),GetSQLValueString("%" . $colname_RS_Search . "%", "text")); 


$query_limit_RS_Search = sprintf("%s LIMIT %d, %d", $query_RS_Search, $startRow_RS_Search, $maxRows_RS_Search); 
$RS_Search = mysql_query($query_limit_RS_Search, $dconn) or die(mysql_error()); 
$row_RS_Search = mysql_fetch_assoc($RS_Search); 

if (isset($_GET['totalRows_RS_Search'])) { 
    $totalRows_RS_Search = $_GET['totalRows_RS_Search']; 
} else { 
    $all_RS_Search = mysql_query($query_RS_Search); 
    $totalRows_RS_Search = mysql_num_rows($all_RS_Search); 
} 
$totalPages_RS_Search = ceil($totalRows_RS_Search/$maxRows_RS_Search)-1; 

$queryString_RS_Search = ""; 
if (!empty($_SERVER['QUERY_STRING'])) { 
    $params = explode("&", $_SERVER['QUERY_STRING']); 
    $newParams = array(); 
    foreach ($params as $param) { 
    if (stristr($param, "pageNum_RS_Search") == false && 
     stristr($param, "totalRows_RS_Search") == false) { 
     array_push($newParams, $param); 
    } 
    } 
    if (count($newParams) != 0) { 
    $queryString_RS_Search = "&" . htmlentities(implode("&", $newParams)); 
    } 
} 
$queryString_RS_Search = sprintf("&totalRows_RS_Search=%d%s", $totalRows_RS_Search, $queryString_RS_Search); 

подкачки запускается следующим образом:

<td><?php if ($pageNum_RS_Search > 0) { // Show if not first page ?> 
      <a href="<?php printf("%s?pageNum_RS_Search=%d%s", $currentPage, 0, $queryString_RS_Search); ?>">First</a> 
      <?php } // Show if not first page ?></td> 
     <td><?php if ($pageNum_RS_Search > 0) { // Show if not first page ?> 
      <a href="<?php printf("%s?pageNum_RS_Search=%d%s", $currentPage, max(0, $pageNum_RS_Search - 1), $queryString_RS_Search); ?>">Previous</a> 
      <?php } // Show if not first page ?></td> 
     <td><?php if ($pageNum_RS_Search < $totalPages_RS_Search) { // Show if not last page ?> 
      <a href="<?php printf("%s?pageNum_RS_Search=%d%s", $currentPage, min($totalPages_RS_Search, $pageNum_RS_Search + 1), $queryString_RS_Search); ?>">Next</a> 
      <?php } // Show if not last page ?></td> 
     <td><?php if ($pageNum_RS_Search < $totalPages_RS_Search) { // Show if not last page ?> 
      <a href="<?php printf("%s?pageNum_RS_Search=%d%s", $currentPage, $totalPages_RS_Search, $queryString_RS_Search); ?>">Last</a> 
       <?php } // Show if not last page ?></td> 

ответ

0

при перенаправлении на страницу, вы всегда расслабить переменную $ _POST.

вы можете сделать свой PHP работу первым, а затем перенаправлять с помощью функции PHP Header()

+0

Спасибо за ваш ответ. Я думал, что $ _Session позаботится об этом или произойдет перенаправление, прежде чем получить переменную формы. – Ria

0

содержания Да POST действительно теряется, когда вы делаете редирект с помощью R флага из ваших правил или сделать переадресацию с PHP.

Если вы хотите использовать довольно URL в операции POST, лучше изменить action часть вашего form так:

<form id="searchbox" action="/Search" method="post"> 
     <input id="search" name="Search" type="text" placeholder="Search Products"> 

    <input id="submit" type="submit" value="Search" ></form> 

Также исправленная версия ваших правил будет это:

RewriteCond %{REQUEST_METHOD} !POST 
rewritecond %{THE_REQUEST} \s/+search\.php[\s?] [NC] 
rewriterule^/Search/? [R=301,L] 

rewritecond %{REQUEST_FILENAME} !-d 
rewritecond %{REQUEST_FILENAME} !-f 
rewriterule ^Search/?$ /search.php [NC,L,QSA] 

RewriteCond %{REQUEST_METHOD} !POST 
rewritecond %{THE_REQUEST} \s/+search\.php\?pageNum_RS_Search=([^\s&]+)&totalRows_RS_Search=([^\s&]+) [NC] 
rewriterule^/Search/%2/%1? [R=301,L] 

rewritecond %{REQUEST_FILENAME} !-d 
rewritecond %{REQUEST_FILENAME} !-f 
rewriterule ^Search/([^/]+)/([^/]+)/?$ /search.php?pageNum_RS_Search=$2&totalRows_RS_Search=$1 [L,QSA] 

RewriteCond %{REQUEST_METHOD} !POST пропустит правила перенаправления для POST запросов.

+0

Еще раз спасибо за ответ. Однако, если я хочу перейти на следующую страницу, это не сработает, первая страница останется прежней, но URL-адрес изменился с Search to Search /. – Ria

+0

Вы хотите показать '/ Search' или'/Search/'в браузере? – anubhava

+0

Могу ли я иметь/Поиск/просьба – Ria

Смежные вопросы