Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    143

    Sostituire id con titoli

    Mi scuso in anticipo nel caso in cui questa non sia la seziona adatta all'argomento.

    Ho (finalmente) terminato di costruire il mio sito in php/mysql, o quasi... e adesso mi ritrovo ad affrontare qualcosa con cui non ho mai avuto a che fare: il mod rewrite. Ho la necessità di rendere le url del sito più appetibili per i motori di ricerca.

    Il problema non è tanto quello di ottenere le url statiche ma è sostituire gli id con i titoli. Mi spiego meglio:

    Ho url del tipo: http://root/sottocartella/prodotto.php?id_prodotto=1

    Nell'.htaccess assegno la seguente regola:

    RewriteRule ^sottocartella/([A-Za-z0-9-]+).html$ sottocartella/prodotto.php?id_prodotto=$1 [L]

    Ottenendo urls del tipo: http://root/sottocartella/1.html

    Vorrei però che invece di 1.html, ci fosse il titolo del prodotto, per esempio 'macchina.html'.

    Quello che vi chiedo è se esiste un sistema per evitare di trasformare la query che estrare il prodotto dal db. Il codice è:

    Codice PHP:
    //Verifico l'esistenza di un id_prodotto e il tipo di id
    if((!isset($_GET['id_prodotto'])) || (!is_numeric($_GET['id_prodotto'])))
    {
    //Se l'id non è valido, reindirizzo all'index
    header("Location: index.php");
    }else{
    $id_prodotto $_GET['id_prodotto']; 
    }

    $prodotto_sql $data->query("SELECT * FROM prodotti WHERE id_prodotto = $id_prodotto"); 
    Trasformando "WHERE id_prodotto = $id_prodotto" in "WHERE titolo_prodotto = $titolo_prodotto", potrei risolvere, ma allora dovrei cambiare anche il controllo dell'id e !is_numeric non avrebbe più senso di esistere, correndo quindi qualche rischio in più per la sicurezza.

    Quindi vorrei capire se invece di sostituire la clausola WHERE nella query, potrei agire in altro modo.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    (io userei tutto un altro approccio, ma tant'è...)

    con il tuo sistema hai cmq, riassumendo, un url che contiene un riferimento al prodotto tramite il titolo e da qui devi risalire al prodotto, quindi mantenendo questa struttura DEVI per forza fare una query che dal titolo ti restituisca le informazioni necessarie... piuttosto: come fa un utente ad accedere a tale query? suppongo ci siano dei link in altre pagine... a questo punto l'url la puoi generare anche in una forma tipo: http://root/sottocartella/macchina/01 o qualcosa del genere... in pratica nell'url puoi mettere sia il titolo che l'id e poi nel mod_rewrite usi una riscrittura che va a pescare solo l'id o cmq anche quello

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    143
    Grazie per la risposta

    In effetti questa potrebbe essere un'ottima soluzione. Ammettiamo di linkare la pagina prodotto in questo modo:

    Codice PHP:
    $url "prodotto.php?".$titolo_prodotto."&id_prodotto=".$id_prodotto
    Esiste una regola per il rewrite che mi permetta di cancellare dall'URL l'$id_prodotto, lasciando solamente il titolo?

    (io userei tutto un altro approccio, ma tant'è...)
    Cioè? Te lo chiedo anche per capire come comportarmi in futuro, visto che il mio php è ancora troppo zoppo e mi ritrovo quasi sempre a dover fare i conti con i miei errori alla fine del lavoro.

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    mmmh... per soluz. alternative poi magari ne parliamo, ma... se tu generi l'url come dici a cosa servirebbe il rewrite? cioè... ha senso se tu generi url "friendly" (tipo /nomeprodotto/id) e poi il rewrite le trasforma come serve a te... in pratica tu puoi generare un url così:


    Codice PHP:
    $url "$titolo_prodotto/id_prodotto"
    e poi il rewrite la trasformerà come una chiamata a "prodotto.php" con i parametri...

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    143
    Non ho capito subito quello che intendevi, ma alla fine ci sono arrivato e finalmente anche questo caso è chiuso... spero...

    Grazie mille per l'aiuto!

    PS: Quando hai 5 minuti di tempo, sarei felice di leggere le alternative a cui facevi riferimento.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    alternative... dipende molto da cosa stai facendo, p.es. un paio:

    1) uso di un cms già strutturato... molti generano indirizzi friendly automaticamente
    2) generazione url con database: ogni volta che generi un url registri in una tabella una doppia entrata: url visualizzata e url "interna", poi redirezioni tutto ad un unico script senza parametri che farà il redirezionamento in base a questa tabella

  7. #7
    Utente di HTML.it L'avatar di ertos
    Registrato dal
    Nov 2005
    Messaggi
    448

    risposta

    Anchio ho lo stesso problema, è stata trovata una soluzione?

    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.