-
funzione $_GET
Ho un problema con questo script che prima funzionava benissimo ma adesso no, non è che altervista ha cambiato dei settaggi che riguardano la funzione $_GET.
In pratica ho una pagina in cui ho elenco alfabetico e linkando sulla lettera lo script rimandava i brani con la lettera linkata. Adesso li manda tutti senza eseguire la query. Vi indico la pagina così vi rendete conto. http://http://www.lordbyron.altervista.org/indice_testi.php
posto la funzione che uso
Codice PHP:
<?php
//Qui definiamo semplicemente le variabili da utilizzare per connetterci
$db_host = ''; //Host,solitamente "localhost"
$db_user = '; //Username di accesso al database
$db_pass = ''; //Password di accesso al database
$db_name = '; //Nome del database a cui connettersi
//Con la funzione mysql_connect ci connetteremo e successivamente sceglieremo il database con mysql_select_db
$connection = mysql_connect ($db_host, $db_user, $db_pass);
$id=$_GET['id'];
if ($connection == false){
die ('Impossibile Connettersi al database');
}
$database = mysql_select_db ($db_name);
if ($database == false){
die ('Impossibile connettersi al database selezionato');
}
if ($iniz =="num") //qury per cantanti comincianti con un numero
{$myvarsql = "SELECT * FROM `elenco_brani` where brano REGEXP '^([1-9])(.*)'";}
else//query per tutti gli altri casi
{$myvarsql = "SELECT * FROM `elenco_brani` where brano like '".$iniz."%' order by 'elenco'"; }
$myquery = mysql_query ($myvarsql,$connection)
or die ("query di selezione fallita $myvarsql <br>");
while ($myvalues = mysql_fetch_array($myquery))
{
$brano = $myvalues['brano'];
$link = $myvalues['link'];
echo "<font size=\"3\"><a href=\"$link\">$brano</a></font>";
echo"<br />";
}
?>
-
A parte che $_GET è una variabile, e non una funzione, l'unica cosa che può essere cambiata è la rimozione di register_globals.
Nel tuo script usi una variabile non inizializzata chiamata $iniz, dove probabilmente andrebbe usato $_GET['iniz'], proprio come poco sopra usi $_GET['id'].
Occhio anche agli apici mancanti nei parametri del db in alto, guarda la colorazione delle prime righe! (o forse hai cancellato i valori per postare il codice?)
-
scusami è stato un lapsus pensavo a funzione in effetti è una variabile :lol:
l'apice mancante è stato cancellato per sbaglio mentre cancellavo i dati.
ho provato a fare come dici tu ma non funziona lo stesso :lol:
ti dicevo...la cosa strana è che ha sempre funzionato benissimo
-
Hai corretto tutte le occorrenze di $iniz?
Ti conviene inserire una riga tipo
Codice PHP:
$iniz = mysql_real_escape_string($_GET['iniz']);
altrimenti inserendo quel parametro direttamente nella query rischi danni via sql-injection.
edit: cliccando ora mi sembra funzionare senza problemi.
-
stavo valutando proprio questa cosa ho visto che attivo le register globals funziona ma questo crea vulnerabilità al database
grazie per la soluzione proposta adesso va bene, ti ringrazio per la pazienza :lol:
-
Non sono le register_globals in sè che creano vulnerabilità; il problema è che non fai alcun controllo sui valori che arrivano via url.
register_globals, da sole, possono creare problemi solo in script fatti male, che usano variabili non inizializzate.