In mijn website wordt er regelmatig gebruik gemaakt van de $_request functie. deze geeft echter een vreemde waarde, zoals "http://localhost/categories.php?category=/-/iB/-/iu/-/is/-/ii/-/in/-/ie/-/is/-/is/-/ie/-/is/-/i /-/iF/-/io/-/ir/-/i /-/iS/-/ia/-/il/-/ie/-/i&parent_id=887".

De link waarnaar de "vreemde" code verwijst werkt wel, dus de pagina wordt bereikt. Maar het komt op mij over als of het niet de bedoeling is.

Weet iemand misschien waar ik moet beginnen met zoeken naar de oplossing? Is dit een standaard instelling vanuit PHP 5.3.0 omdat daar de functie request_order toegevoegd is?

Of zit het puur in mijn code waardoor $_REQUEST niet goed verwijst.

Help aub.

[size=xsmall]Toevoeging op 13/02/2012 16:05:54:[/size]

script regel als voorbeeld:

$page = (!empty($_REQUEST['page'])) ? $_REQUEST['page'] : 'messaging';

[size=xsmall]Toevoeging op 13/02/2012 16:06:54:[/size]

Geeft als output:

http://localhost/members_area.php?page=/-/im/-/ie/-/is/-/is/-/ia/-/ig/-/ii/-/in/-/ig/-/i
Je zegt dat er regelmatig gebruik van wordt gemaakt. Is dit dan een probleem dat opeens tevoorschijn is gekomen of is dit vanaf het begin af aan al zo?
$_REQUEST is niet veilig om te gebruiken. Gebruik $_POST of $_GET, maar niet $_REQUEST.
Vergeet $_REQUEST !

Indien de variabele in de url zit, gebruik je $_GET; indien de variabele uit een formulier komt (met method="post") gebruik je $_POST.

$_REQUEST is een soort merge van verschillende input van de gebruiker. $_REQUEST maakt dus dat jij, de scripter, minder vat hebt op je eigen code. Je weet namelijk niet waar die waarde vandaan komt.

Tegenwoordig zie ik geen enkele toepassing waarbij dit als een goed ding kan beschouwd worden.
Bedankt allemaal. Ik ga het met GET proberen. Zou idd ook moeten werken.
Het lijkt op een soort escape techniek voor 'Businesses for Sale'.
Kijk ook even naar je .htaccess, maybe that's the place where 'the magic' happens.
Ik heb GET geprobeerd maar geeft dezelfde waarde als REQUEST (logisch toch?).

Het gaat hier om oud script welke al helemaal geschreven is en ik ben deze aan het "finetunen".

PS Ik heb nog geen .htaccess file omdat ik nu nog lokaal aan het knutselen ben. Ik gebruik het ook meer om bekend te worden binnen PHP/MySQL.

Nogmaals help aub.

Stephan Hendrikx op 14/02/2012 08:58:50

Het gaat hier om oud script welke al helemaal geschreven is en ik ben deze aan het "finetunen".


Hoe oud?
Laat eens wat concrete code zien.
<?

session_start();

define ('IN_SITE', 1);

include_once ('includes/global.php');

include_once ('global_header.php');

(array) $query = null;
$parent_id = intval($_REQUEST['parent_id']);
$advanced_search = ($_REQUEST['advanced_search'] == '') ? 1 : intval($_REQUEST['advanced_search']);
$template->set('parent_id', $parent_id);

define('IS_CATEGORIES', 1);

//$template->set('db', $db);

(string) $subcategories_content = null;

$main_category_id = $db->main_category($parent_id);
$category_details = $db->get_sql_row("SELECT image_path, minimum_age FROM " . DB_PREFIX . "categories WHERE category_id='" . $main_category_id . "'");
$category_logo = $category_details['image_path'];

$category_logo = (!empty($category_logo)) ? '<img src="' . $category_logo . '" border="0">' : '';
$template->set('category_logo', $category_logo);

$categories_header_menu = category_navigator($parent_id, true, true, 'categories.php');
$template->set('categories_header_menu', $categories_header_menu);



Zomaar een willekeurig voorbeeldje



Het is code geschreven in 2007

[size=xsmall]Toevoeging op 14/02/2012 13:02:28:[/size]

Ik vermoedt dat het ergens in het script zit want op bovenstaande 'parent-id' geeft hij wel de juiste waarde weer.

kan iemand me enigszins op weg helpen?
Je probleem zit hem in het weergeven van een url.
Bovenstaande code laat volgens mij niet zien hoe je url wordt opgebouwd.

Misschien handig om die code te posten, want daar zou mogelijk meer duidelijk uit kunnen worden. En het is dan een kwestie van stapje voor stapje terug:
Waar wordt de url opgebouwd?
Gebeurt dat door variabelen?
Hoe zijn die gedefinieerd?
Zo'n antwoord had ik al verwacht. Ik heb me al een aantal keer helemaal suf gezocht, maar ik ga het nogmaals proberen.

Ik post het script zodra ik denk dat ik het gevonden heb.

[size=xsmall]Toevoeging op 14/02/2012 16:08:14:[/size]

De link in de browser:

<td class="c2">
<a href="<?=process_link('members_area', array('page' => 'messaging', 'section' => 'received'));?>"></a>
</td>

Dit geeft in de browser de output:

http://localhost/members_area.php?page=/-/im/-/ie/-/is/-/is/-/ia/-/ig/-/ii/-/in/-/ig/-/i&section=/-/ir/-/ie/-/ic/-/ie/-/ii/-/iv/-/ie/-/id/-/i

De Functie "process_link":

<?php
function process_link($base_url, $var_array = NULL)
{
global $setts;

$ssl_url_simple = array('login', 'register');
$ssl_url_enhanced = array('login', 'register', 'members_area', 'fee_payment');

$ssl_url_array = ($setts['enable_enhanced_ssl']) ? $ssl_url_enhanced : $ssl_url_simple;

(string) $output = NULL;

$path = ($setts['is_ssl']==1 && (in_array($base_url, $ssl_url_array))) ? $setts['site_path_ssl'] : $setts['site_path'];

if ($setts['is_mod_rewrite'] && $var_array)
{
if ($var_array)
{
while(list($key, $value) = each($var_array))
{
$sanitized_value = sanitize_var($value);
$output .= $sanitized_value.','.$key.',';
}
}
$output .= $base_url;
}
else
{
$output = $base_url.'.php';
if ($var_array)
{
$output .= '?';
while(list($key, $value) = each($var_array))
{
$sanitized_value = sanitize_var($value);
$output .= $key.'='.$sanitized_value.'&';
}
$output = substr($output,0,-1);
}
}

return $path . $output;
}
?>

In de admin sectie staat SSL niet aangevinkt.

Verder is er nog de basisfile voor de members_area met daarin een gedeelte van de code:

<?

session_start();

define ('IN_SITE', 1);

include_once ('includes/global.php');
include_once ('includes/class_formchecker.php');
include_once ('includes/class_custom_field.php');
include_once ('includes/class_user.php');
include_once ('includes/class_fees.php');
include_once ('includes/class_shop.php');
include_once ('includes/class_item.php');
include_once ('includes/functions_item.php');
include_once ('includes/functions_login.php');
include_once ('includes/class_messaging.php');
include_once ('includes/class_reputation.php');

if (!$session->value('user_id'))
{
header_redirect('login.php');
}
else
{
$page = (!empty($_REQUEST['page'])) ? $_REQUEST['page'] : 'messaging';
$section = (!empty($_REQUEST['section'])) ? $_REQUEST['section'] : 'received';
$page = ($page == 'wanted_ads' && !$setts['enable_wanted_ads']) ? 'messaging' : $page;
$section = ($page == 'wanted_ads' && !$setts['enable_wanted_ads']) ? 'received' : $section;
$page = ($page == 'store' && !$setts['enable_stores']) ? 'messaging' : $page;
$section = ($page == 'store' && !$setts['enable_stores']) ? 'received' : $section;
$page = ($page == 'bulk' && !$setts['enable_bulk_lister']) ? 'messaging' : $page;
$section = ($page == 'bulk' && !$setts['enable_bulk_lister']) ? 'received' : $section;
?>

Ik weet dat ik heel wat vraag maar zit echt omhoog, omdat het script hierdoor niet goed werkt. Alvast bedankt voor de moeite.

Reageren