2012-02-17 3 views
0

Все я прочитал говорит мне, что это должно работать

страница 1

<?php 
$state = $_GET['state']; 
$brand = $_GET['brand']; 

include ("my_path/state_brand_page_01.php"); 

?> 

страница 2

<? 
//get all dealers for this brand and state 
session_start(); 
include ('../../lib/db.php'); 

//=======================Start Local Insert 

    //This stops SQL Injection in POST vars 
    foreach ($_POST as $key => $value) { 
    $_POST[$key] = mysql_real_escape_string($value); 
    } 

    //This stops SQL Injection in GET vars 
    foreach ($_GET as $key => $value) { 
    $_GET[$key] = mysql_real_escape_string($value); 
    } 

//get dealer 

echo $state; 
echo $_GET['state']; // NOTHING SHOWING 

$dquery = mysql_query("SELECT * FROM dealer WHERE state='$_GET[state]' AND brand='$_GET[brand]' ORDER BY company DESC") or die(mysql_error()); 


?> 

Я не подвожу здесь ничего, нет эха var, нет возврата из базы данных. Страница отлично работает сама по себе, только не тогда, когда включен

Благодаря

+0

если я делаю это, включите («my_path/state_brand_page_01.php? State = $ state & brand = $ brand»); это работает, но я не думал, что должен был это сделать. –

+0

try print_r ($ _ GET); На второй странице и расскажите, что произойдет – Sedz

+0

Это благородная попытка остановить инъекции SQL, но однажды вы собираетесь ускользнуть, забыв избежать переменной и, вполне возможно, серьезно повредить себе, своим бизнесам или вашей карьере , [Использование PDO] (http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/) намного безопаснее. – tadman

ответ

2

Возможно, ваш путь интерпретируется как URL-адрес (например, www.foo.com/state_brand_page_01.php) и как таковой include() извлекает его с помощью методов HTTP? Это приведет к потере $ _GET.

Обратитесь к http://de2.php.net/manual/en/function.include.php

Ниже в примере 2 #.

+0

Вы получили его ... Я использовал полный URL-адрес. когда я использую путь в include i.e. (../../lib/state_brand_01.php), он работает! –

0

Оба $ состояние и $ _GET [ «состояние»] должны быть доступны, если включена QueryString состояние = безотносительно.

Когда я видел проблемы с этим, если вы включаете по URL вместо пути к файлу, а именно:

include('http://www.test.com/file.php'); 

Он не будет знать о своих ценностях, потому что он разбирается, прежде чем он включен. (Также считается плохой практикой по соображениям безопасности.)

+1

Я действительно рассмеялся, когда вы показали, как его путь включения был URL-адресом –

2

попытаться поставить его в сессии

$_SESSION['state'] = $_GET['state']; 

$ _SESSION [ 'бренд'] = $ _GET [ 'бренд'];

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