Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Php ottenere nome file senza suffisso per id body

    Premetto che sono un neofita in argomento e che ho cominciato col Php da una settimana circa.

    Dunque, il problema è questo:
    io ho realizzato un mio sito web e grazie ad un amico ho inserito uno script php grazie al quale l'utente non deve caricare ogni volta la struttura e le immagini della pagina, ma solo i contenuti (che vengono scritti dentro un'altra pagina in tabella).

    Codice PHP:
    <?php
            $link
    =$_GET['link'];
            if (
    $link == "" || strstr($link'home') || (!file_exists($link)))
            {
                include(
    "cutenews/show_news.php");
            }
            else
            {
                if(
    strstr($link,"http://"))
                {
                    echo 
    "ò_o";
                }
                else
                {
                    
                    include(
    $link);
                }
            }
            
    ?>
    Laddove include cutenews è per il modulo cutenews, ossia un modello per scrivere news.

    Ora io volevo inserire nel mio sito anche un rollover con immagini precaricate via css e il tutorial che ho trovato mi dice di modificare il mio body id.
    Il problema è che utilizzando questo php sopra non posso modificarlo semplicemente scrivendo il nuovo id
    Ho cercato su google e ho scoperto che esiste la funzione basename che mi ridà il nome della pagina che sto visualizzando.

    Ma sono sorti altri due problemi.
    In prima istanza i miei link sono tutti di questo tipo:
    che mi da come risultato:
    codice:
    http://miosito.altervita.org/index.php?link=pagina.php
    e tramite questo codice (che da varie letture mi è sembrato il più pratico) (ho inserito anche il tag head e il body per essere il più completo possibile)
    Codice PHP:
    </head>

    <?php
        $page
    basename($_SERVER['PHP_SELF'], ".php")

    ?>

    <body id="<?php echo $page ?>">
    cerco di risalire all'id del body (che da css ho settato come index, pagina, prova, piripacchio etc proprio come il nome della mia pagina). L'unica cosa è che con questi codici l'unico risultato che ottengo è
    <body id="index.php"> nonostante io mi trovi su altre pagine
    Ora, immagino esista una soluzione, ma personalmente non sono riuscito a trovarla.
    Qualcuno potrebbe gentilmente spiegarmi come risolvere questo mio problema?
    Grazie mille
    -Eux-

  2. #2
    usa substr

    http://it.php.net/manual/en/function.substr.php

    esempio 1 nel tuo caso -4 invece di -1

  3. #3
    Scusa la niubbaggine (chiedo giusto per andare sul sicuro), ma dovrei quindi fare:

    Codice PHP:
    <?php
    $page
    basename($_SERVER['PHP_SELF'], ".php"
    $rest substr("$page", -1);
    ?> 
    <body id="<?php echo $rest ?>">
    e non dovrebbe quindi darmi ne pagina.php ne prendere index da http://miosito.altervista.org/index.php?link=pagina.php giusto??
    Premetto che non ho ancora provato perchè sono in università, conto di provarci domani mattina

  4. #4
    okay, probabilmente non ho capito io cosa vuoi ottenere

    il risultato deve essere:

    index
    index.php
    index.php?var=valore

    o cos'altro?

  5. #5
    Allora, io ho l'indirizzo della pagina che risulta essere:

    Index:
    http://miosito.altervista.org/index.php

    Pagina:
    http://miosito.altervista.org/index.php?link=pagina.php

    Piripicchio:
    http://miosito.altervista.org/index....iripicchio.php

    Quello che io ora voglio è ottenere index dal primo, pagina dal secondo e piripicchio dal terzo, in modo che risultino come id del body.
    Nel css ho inserito classi apposta a quest id che mi servono per un menù.

    Il massimo che finora ho ottenuto è stato index.php, solo che oltre ad esserci il suffisso php, non cambiava per pagina visitata ma rimaneva sempre fisso sull'index, quindi dal menu mi risultava sempre che ero in home nonostante fossi in pagina.
    Spero di essermi spiegato meglio
    Grazie mille
    -Eux-

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    pagina.php e piripicchio.php dovrebbero stare dentro la variabile $_GET['link']
    quindi le potresti recuperare abbastanza facilmente scrivendo
    Codice PHP:
    <body id="<?php echo $_GET['link'?>">
    sempre se ho capito cosa ti serve...

    Ovviamente, se non ti serve l'estensione, ci devi applicare la funzione substr in modo appropriato per eliminarla...

  7. #7
    Quasi risolto.
    Dalla pagina di descrizione di substr ho trovato questo post e integrando le due cose:
    Codice PHP:
    <?php

    $filename 
    $_GET['link'];

    $page=substr($filename0, (strlen ($filename)) - (strlen (strrchr($filename,'.'))));

    ?>



    <body id="<?php echo $page  ?>">
    L'unico problema è che sono passato da un estremo all'altro
    Da vedere solo l'index a non vedere solo l'index...Sulla pagina dell'index mi dice <body id="">
    Come posso rimediarvi??


    edit// Ho provato a mettere una condizione if per cui se da get link prende home, la mia variabile richiamata nel body (in questo caso $page) valga index
    Codice PHP:
    <?php

        $filename 
    $_GET['link'];
        if(
    $link == "index.php")
                {
                    
    $page="index";
                }
                else
                
    $page=substr($filename0, (strlen ($filename)) - (strlen (strrchr($filename,'.'))));

    ?>
    Dovrebbe essere giusto (o almeno credo) ma evidentemente non è così dato che non risolve il mio problema

    -Eux-

  8. #8
    Se ho capito bene il problema:

    codice:
    <?php
    preg_match("#([^=]+?)(.php)?$#", basename($_SERVER['REQUEST_URI']), $match);
    
    $page = $match[1];
    ?>

  9. #9
    Originariamente inviato da k.b
    Se ho capito bene il problema:

    codice:
    <?php
    preg_match("#([^=]+?)(.php)?$#", basename($_SERVER['REQUEST_URI']), $match);
    
    $page = $match[1];
    ?>
    Grandissimo, funziona perfettamente^^
    Mi potresti spiegare (in maniera facile) in cosa consista??
    Se non puoi fa niente, grazie mille.
    E grazie pure clasku e goikiu per il loro aiuto^^
    -Eux-

  10. #10
    Allora:

    - $_SERVER['REQUEST_URI'] e' una variabile globale che contiene l'indirizzo cosi' come appare nella barra del browser
    - basename() toglie tutta la parte prima (http e path) e tiene solo il nome del file
    - la regular expression prende il nome del file tolto il .php, se c'e' un uguale prende cio' che segue sempre togliendo l'estensione (che in entrambi i casi e' opzionale, la regexp funziona sia con index.php?link=prova che con index.php?link=prova.php)
    - i risultati della preg_match() vengono messi nell'array $match di cui usiamo il secondo valore (indice 1) che contiene cio' che nel pattern e' racchiuso dalla prima coppia di parentesi tonde

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.