Visualizzazione risultati 1 fino 6 di 6

Discussione: funzione $_GET

  1. #1
    Guest

    Predefinito 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 />";




    }
    ?>
    Ultima modifica di lordbyron : 05-03-2012 alle ore 19.36.16

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,266

    Predefinito

    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?)
    Ultima modifica di dreadnaut : 05-03-2012 alle ore 20.47.11

  3. #3
    Guest

    Predefinito

    scusami è stato un lapsus pensavo a funzione in effetti è una variabile

    l'apice mancante è stato cancellato per sbaglio mentre cancellavo i dati.

    ho provato a fare come dici tu ma non funziona lo stesso

    ti dicevo...la cosa strana è che ha sempre funzionato benissimo

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,266

    Predefinito

    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.
    Ultima modifica di dreadnaut : 05-03-2012 alle ore 20.58.07

  5. #5
    Guest

    Predefinito

    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

  6. #6
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,266

    Predefinito

    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.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •