Pagina 1 di 8 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 78
  1. #1

    [ARTICOLO] URL dinamici graditi ai motori

    Direttamente da Freephp un articolo di cui non avevamo parlato sul forum:

    http://freephp.html.it/articoli/view_articolo.asp?id=61
    w la topa

  2. #2
    L'articolo è praticamente la pillola riveduta e corretta dopo un anno di prove pratiche.

    Metto qui i ringraziamenti che ho dimenticato di inserire nella seconda versione

    Skidx per aver letto l'articolo e avermi incoraggiato prima che fosse pubblicato.

    E poi tutti quelli che lo hanno provato e in modo particolare
    EdoardoP, Tuningvideo, MinistryofSound, Milo di NextItalia s.r.l
    per favore NIENTE PVT TECNICI da sconosciuti

  3. #3
    Script alternativo a quello presentato nell'articolo (usa un'espressione regolare, è più " fine" ma ora l'ho scartato perchè meno rapido)


    <?php

    /*
    Compatibilità con vecchie versioni di php (se necessario)
    Vedere pillola sulle "nuove variabili" del forumista Chris
    nel forum php

    if(!isset($_SERVER) OR !$_SERVER OR !is_array($_SERVER) OR count(array_diff($_SERVER, $HTTP_SERVER_VARS))){
    $_GET=&$HTTP_GET_VARS;
    $_POST=&$HTTP_POST_VARS;
    $_SERVER=&$HTTP_SERVER_VARS;
    $_ENV=&$HTTP_ENV_VARS;
    $_COOKIE=&$HTTP_COOKIE_VARS;
    $_FILES=&$HTTP_POST_FILES;
    $_SESSION=&$HTTP_SESSION_VARS;
    }

    Fine compatibilità
    */

    /*
    Inizio script vero e proprio
    */
    if(isset($_SERVER["PATH_INFO"])){

    $separator1="/" ;
    $separator2="=" ;

    $collection=$_SERVER["PATH_INFO"] ;

    /*
    Sicurezza: controlla valori inseriti dall'utente
    */

    $collection=strip_tags($collection) ;
    $collection=escapeshellcmd($collection) ;

    //Fine sicurezza

    /*
    Estrazione dei dati in array con espressione regolare PERL
    */
    preg_match_all("|([^$separator1]+)$separator2([^$separator1]*)|",$collection,$matches) ;

    $_MYVAR=array() ;

    for($i=0;$i<count($matches[1]);$i++){

    $_MYVAR[$matches[1][$i]]=$matches[2][$i] ;

    }

    /*
    decommentare la riga qui sotto se si desidera
    mantenere la compatibilità con script che "raccolgono" le variabili
    da QUERY_STRING
    */
    //$_GET=&$_MYVAR ;

    /*
    Solo dimostrativo non inserire nelle pagine
    */
    print_r($_MYVAR);

    }//end if isset(PATH_INFO)

    ?>
    per favore NIENTE PVT TECNICI da sconosciuti

  4. #4
    Marò, Fabio mi ringrazia pubblicamente, quale onore (e mi paga pure i caffè...)

  5. #5
    Come al solito complimenti e grazie per il tempo che dedichi costantemente a questa comunita'

    ma siccome sono un maledetto rompic*gli*ni e spesso troppo puntiglioso, tengo a precisare che ci sono imperfezioni nella pagina 2 dell' articolo.

    Certo che chi copia e incolla lo script definitivo non ha niente da perdere, ma ki come me cerca di capire e magari rifare il tutto per i fatti suoi ed e' un po distratto, potrebbe incocciare in questo banale errore di scrittura:
    Codice PHP:
    <?php 
    /* 
    in questo punto va inserito il codice presentato fino ad ora 
    */ 

    $_PINFO=array() ; 

    foreach (
    $var as $key=>$value){ 


    if(!(
    $key%2)){ 

    $_PINFO["$value"]=$var[$key+1] ; 




    }
    //END FOREACH 

    ?>
    Secondo il codice presentato precedentemente il foreach risulta sbagliato perche' $var in realta' non esiste. Va sostituito quindi con l' ultimo explode fatto precedentemente:
    Codice PHP:
    // .... etc. etc ...
    $collection str_replace($separators[1], $separators[0], $collection); 

    /* 
    Ecco l'explode 
    */ 
    $new_array=explode($separators[0],$collection) ; 

    // a questo punto si dovra' aggiungere il seguente codice
    $_PINFO=array() ; 

    foreach (
    $new_array as $key=>$value){ 


    if(!(
    $key%2)){ 

    $_PINFO["$value"]=$var[$key+1] ; 




    }
    //END FOREACH 
    Ancora complimenti! :metallica
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  6. #6
    Ciao,
    grazie a te di avermi sengalato la cosa!

    Evidentemente facendo copia e incolla dalla precedente versione dell'articolo ho di menticato di modificare il nome della variabile.
    Comunque lo script definitivo e anche la mini-classe funzionano perchè le ho fatte ex-novo.
    Eventualmente se qualcos'altro che non va fammelo sapere....
    per favore NIENTE PVT TECNICI da sconosciuti

  7. #7
    scusate, sono incorso in un piccolo problema: abituato ad utilizzare i percorsi relativi per le immagini, quando c'è un indirizzo del tipo script.php/var_valore le immagini vengono cercate, appunto, in root/script.php/var_valore/images/immagine.gif.

    Per ovviare ho modificato i link immagine mettendoli assoluti, utilizzando una costante da me definita che contiene i parametri HTTP_HOST e SCRIPT_NAME:

    define("URL",$_SERVER['HTTP_HOST'].dirname($_SERVER['SCRIPT_NAME']));

    questo per mantenere la portabilità del sito su domini diversi (devo testarlo sul server di casa, ma poi pubblicarlo sul SUO dominio) ma vorrei sapere se non c'è un altra soluzione...

  8. #8
    Ciao,
    non so se ho capito
    non sei obbligato ad utilizzare percorsi assoluti con http:// puoi ottenere comunque la portabilità utilizzando un percorso assoluto di questo tipo

    /dir1/dir2/file.ext

    anzichè

    http://www.dom.it/dir1/dir2/file.ext


    Il primo "/" rappresenta la root in qualsiasi sito tu sposti i tuoi file

    nell'articolo ci sono i dettagli su come costruire automaticamente questo percorso
    per favore NIENTE PVT TECNICI da sconosciuti

  9. #9
    mi è venuta una curiosità...

    non c'è un modo di ottenere direttamete le variabili senza l'array $_PINFO ???

    cioè se c'ho un indirizzo cosi index.php/id=1 dovrebbe risultare nella pagina index.php una variabile (o costante) $id con valore 1...

    in pratica si dovrebbe modificare l'ultimo ciclo FOREACH per creare ogni variabile... ma come?


  10. #10
    io l'ho impostato in modo tale da poter usare $_GET come ho sempre fatto, cmq dovrebbe essere facile, una cosa del genere dovrebbe andar bene:
    Codice PHP:
    if (isset($_SERVER["PATH_INFO"])) {
        
    $separatori = array("/","_");
        
    $vars $_SERVER["PATH_INFO"];
        
    $vars substr($vars,1);
        if (
    substr($vars,-1) == $separatori[0]) {$vars substr($vars,0,-1);}
        
    $vars strip_tags($vars) ; 
        
    $vars escapeshellcmd($vars); 
        
    $vars str_replace($separatori[1], $separatori[0], $vars);
         
    $vars explode($separatori[0],$vars);
         foreach (
    $vars as $key => $value) {
            if (!(
    $key%2)) {$$value $vars[$key+1];}
        }

    La semplice modifica sta nel doppio segno dollaro, che dovrebbe creare una variabile che abbia come nome il valore di $value...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.