Pagina 1 di 1

[RISOLTO] problema admin con php versione 5

Inviato: 05/01/2009, 16:46
da csma-electronics
Ciao a tutti e buon anno innanzitutto...
l'hosting aruba è da poco passato alla versione 5 di php.

E' sorto un piccolo problemino.. :)
Nel pannello di admin, nella sezione Catalogo, quando apro il menù a tendina che mi permette di scegliere una categoria mi ritorna alla pagina del login....
Questo non succedeva con php4.

Cosa potrebbe essere secondo voi?

Grazie mille a tutti...

Re: problema admin con php versione 5

Inviato: 05/01/2009, 18:21
da csma-electronics
Sto indagando, visto che potrebbe essere un problema di sessioni, immagino...
Mi sono accorto che il problema avviene quando viene eseguita la submit del menu a tendina.

Quello che vedo è la creazione di un nuovo session id che non "matcha" con il precedente e di conseguenza fallisce questo test nel file admin/application_top.php

if (!tep_session_is_registered('admin')) {
$redirect = false;

$current_page = basename($PHP_SELF);

if ($current_page != FILENAME_LOGIN) {
if (!tep_session_is_registered('redirect_origin')) {
tep_session_register('redirect_origin');

$redirect_origin = array('page' => $current_page,
'get' => $HTTP_GET_VARS);
}

$redirect = true;
}

if ($redirect == true) {
tep_redirect(tep_href_link(FILENAME_LOGIN));
}

unset($redirect);
}


Spero possa aiutarvi a farmi capire il problema...io non sono espertissimo di sessioni / cookie....
Grazie.

Re: problema admin con php versione 5

Inviato: 05/01/2009, 23:18
da marcus
csma-electronics ha scritto:Sto indagando, visto che potrebbe essere un problema di sessioni, immagino...
Mi sono accorto che il problema avviene quando viene eseguita la submit del menu a tendina.

Quello che vedo è la creazione di un nuovo session id che non "matcha" con il precedente e di conseguenza fallisce questo test nel file admin/application_top.php
La tua diagnosi è corretta.

E' un problema che ho rilevato anche nella versioni precedenti alle RC.

Dovrebbe potersi risolvere in questo modo.

Cerca nel file application_top.php lato admin, il codice:

Codice: Seleziona tutto

// lets start our session
tep_session_start();
e modifica con:

Codice: Seleziona tutto

if (isset($_GET[tep_session_name()])) {
	tep_session_id($_GET[tep_session_name()]);
}

// lets start our session
tep_session_start();
Saluti
Marcus

Re: problema admin con php versione 5

Inviato: 06/01/2009, 0:05
da csma-electronics
Grazie Marcus,

ho provato la soluzione ma il problema non è risolto, purtroppo...
ho stampato i due valori

echo $_GET[tep_session_name()]."<br>";
echo tep_session_id($_GET[tep_session_name()]);

Sono identici ogni volta ma la cosa strana è che sono già diversi da quelli che avevo nel pannello di admin prima di fare il submit....
Mi spiego meglio:

Prima di fare il submit ho questo session id:
e9bo4fpjaivba4m5bfsb2mtbf4

Quando eseguo il submit ho questo session id:
1s8po6k8aqok511feivual1qn6

Di conseguenza stampa i due valori nuovi e diversi dal precedente:
1s8po6k8aqok511feivual1qn6
1s8po6k8aqok511feivual1qn6

Fammi sapere se hai qualche idea in merito.
Ti ringrazio anticipatamente.

Re: problema admin con php versione 5

Inviato: 06/01/2009, 7:25
da marcus
csma-electronics ha scritto:Grazie Marcus,

ho provato la soluzione ma il problema non è risolto, purtroppo...
Mantenendo la modifica di cui sopra, modifica anche il file admin/categories.php come sotto.

Cerca il codice che fa il submit:

Codice: Seleziona tutto

<?php
    echo tep_draw_form('goto', FILENAME_CATEGORIES, '', 'get');
    echo HEADING_TITLE_GOTO . ' ' .  tep_draw_pull_down_menu('cPath', tep_get_category_tree(), $current_category_id, 'onChange="this.form.submit();"');
    echo tep_hide_session_id() . '</form>';
?>
e sostituiscilo con:

Codice: Seleziona tutto

<?php
    echo tep_draw_form('goto', FILENAME_CATEGORIES, '', 'get');
    echo HEADING_TITLE_GOTO . ' ' .  tep_draw_hidden_field(tep_session_name(), tep_session_id()) . tep_draw_pull_down_menu('cPath', tep_get_category_tree(), $current_category_id, 'onChange="this.form.submit();"');
    echo '</form>';
?>
La modifica forza il session id come parametro get nell'url.

Saluti
Marcus

Re: problema admin con php versione 5

Inviato: 06/01/2009, 15:09
da csma-electronics
Sei un grande Marcus,

adesso funziona perfettamente.
Ho integrato il codice che mi hai consigliato anche nel form "cerca" che aveva lo stesso problema.

Di conseguenza ho modificato la sezione:

Codice: Seleziona tutto

<?php
    echo tep_draw_form('search', FILENAME_CATEGORIES, '', 'get');
    echo HEADING_TITLE_SEARCH . ' ' . tep_draw_input_field('search');
    echo '</form>';
?>
con questa:

Codice: Seleziona tutto

<?php
    echo tep_draw_form('search', FILENAME_CATEGORIES, '', 'get');
    echo HEADING_TITLE_SEARCH . ' ' . tep_draw_hidden_field(tep_session_name(), tep_session_id()) . tep_draw_input_field('search');
    echo '</form>';
?>
Grazie mille.

Re: problema admin con php versione 5

Inviato: 06/01/2009, 22:47
da marcus
Bene allora mettiamo un bel ..RISOLTO nel titolo visto che siamo sul forum dei problemi risolti :wink:

Saluti
Marcus