Visualizzazione risultati 1 fino 13 di 13

Discussione: [PHP]Link senza estensione

  1. #1
    Guest

    Question [PHP]Link senza estensione

    Salve,
    sto realizzando una nuova versione del mio sito,per la prima volta in PHP.
    Siccome il sito diventerà molto grande,uso dei link del genere
    http://nomesito.altervista.org/index...ina=link1.html

    Quindi nella pagina index.php uso l'include
    <? include("$pagina"); ?>
    In questo modo si facilita il mantenimento dell'ordine e quindi posso lavorare più velocemente.
    Cosa posso fare per fare in modo che nel link non ci sia l'estensione?
    Cioè se io volessi fare che per andare nella pagina link1,basta andare all'indirizzo
    http://nomesito.altervista.org/index.php?pagina=link1
    quindi non come quello che ho detto in precedenza,in cui viene specificato che la pagina è in html.

    Spero di essere stato chiaro,e che possiate aiutarmi,visto che non sono molto bravo con il PHP

    Ciao

  2. #2
    Guest

    Predefinito

    Se lo scopo è di fare un include, puoi fare così:
    Codice PHP:
    $pagina = $_GET['pagina'].'.php';
    include(
    $pagina);
    Se devi, con qualsiasi funzione, passare solo una variabile è meglio evitare la virgolette.
    In ogni caso questo sistema non è dei più sicuri, poiché basta cambiare il parametro passato per accedere a qualsiasi pagina.
    Il mio consiglio è di mettere un prefisso alle pagine che devono essere visibili, come ad esempio pag_ in modo da impedire l'inclusione di tutti i file.

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da tuttoeniente2
    Se lo scopo è di fare un include, puoi fare così:
    Codice PHP:
    $pagina = $_GET['pagina'].'.php';
    include(
    $pagina);
    Se devi, con qualsiasi funzione, passare solo una variabile è meglio evitare la virgolette.
    In ogni caso questo sistema non è dei più sicuri, poiché basta cambiare il parametro passato per accedere a qualsiasi pagina.
    Il mio consiglio è di mettere un prefisso alle pagine che devono essere visibili, come ad esempio pag_ in modo da impedire l'inclusione di tutti i file.
    Spiegami meglio questo metodo più sicuro.

    P.S.In modo semplice e chiaro

  4. #4
    Guest

    Predefinito

    io farei cosi:
    ti crei un file di testo strutturato cosi:
    Codice:
    link1|pagina.html
    link2|pagina2.html
    con il php crei un array di pagine da includere:

    Codice PHP:
    $pag = array();
    $file = 'pagine.txt';
    $file = file($file);
    for(
    $i = 0; $i < count($file); $i++ )
    {
    $page = explode('|', $file[$i]);
    $pag[$page[0]] = $page[1];
    }
    infine includi il file solo se è nell'array creato:

    Codice PHP:
    if( in_array($_GET['pagina'], $pag) )
    {
    include(
    $pag[$_GET['pagina']]);
    }

  5. #5
    Guest

    Thumbs up

    Non ho capito bene...
    Questa è la pagina index.php

    Codice HTML:
    <html>
    <head>
    <title>NfSWARS</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <style type="text/css">
    <!--
    body,td,tr,table {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 10px;
    }
    body {
    margin-left: 0px;
    margin-top: 0px;
    margin-right: 0px;
    margin-bottom: 0px;
    }
    a:link {
    color: #FFFFFF;
    }
    a:visited {
    color: #FFFFFF;
    }
    a:hover {
    color: #0033FF;
    }
    a {
    font-weight: bold;
    }
    .txtfin {font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 10px;
    }
    -->
    
    
    
    </head> 
    <body style=" background-color: #000000">
    <table width="900" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr align="center" valign="top">
    <td colspan="3"><span class="txtfin">
    <? include("top.html"); ?>
    </span></td>
    </tr>
    <tr>
    <td width="150" align="center" valign="top"><span class="txtfin">
    <? include("sinistra.html"); ?>
    </span></td>
    <td width="600" align="center" valign="top"><span class="txtfin">
    <? include("banner.html"); ?>
    <? include("$pagina"); ?>
    </span></td>
    <td width="150" align="center" valign="top"><span class="txtfin">
    <? include("destra.html"); ?>
    </span></td>
    <table width="900" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr align="center" valign="top">
    <td colspan="3"><span class="txtfin">
    <? include("sub.html"); ?>
    </span></td>
    </tr>
    </table>
    </body>
    </html>
    Vedi ci sono i collegamenti a delle pagine html(sinistra,destra,sub,ecc...)
    Questo invece è parte della pagina sinistra.html

    Codice HTML:
    <table style="text-align: left; background-color: rgb(204, 102, 0); width: 150px; height: 563px;" border="0" cellpadding="0" cellspacing="0">
    <tbody>
    <tr>
    
    <td style="vertical-align: top; text-align: left; width: 152px; background-color: rgb(0, 0, 0); height: 1500px;">
          
          
          
         <table style="text-align: left; width: 150px; height: 62px;" border="0" cellpadding="0" cellspacing="0">
    
    
    
            <tbody>
    
    
    
              <tr>
    
    
    
                <td style="vertical-align: top; text-align: left; background-color: rgb(51, 153, 153); height: 4px;"><small><span style="font-weight: bold; color: rgb(255, 255, 255);">NfSWARS</span></small><br>
    
    
    
                </td>
    
    
    
              </tr>
    
    
    
              <tr style="color: rgb(255, 255, 255);">
    
    
    
                <td style="vertical-align: top; text-align: left; height: 68px;">
    <small>
    <a href="index.php?pagina=home.php">HOME</a>
                <br>
    
    <a href="index.php?pagina=Cerca/cerca.php"> CERCA</a>
                <br>
    
    <a href="index.php?pagina=News/Archivio/archivionews.php"> ARCHIVIO NEWS</a>
                <br>
    
    <a href="index.php?pagina=News/news.html"> NEWS</a>
    In questa parte ci sono 4 diversi tipi di link:HOME,CERCA,ARCHIVIO NEWS e NEWS.
    Come puoi vedere la terzultima è collegata alla pagina cerca.php all'interno della cartella Cerca,la penultima alla pagina archivionews.php,all'interno di quelle cartelle,l'ultima,invece,a quella news.html nella cartella News.

    Come dovrebbero essere questi 4 tipi di link usando il modo più sicuro?
    Nella pagina index.php e sinistra.html.
    Ultima modifica di nfsmostwanted : 15-08-2006 alle ore 17.55.25

  6. #6
    Guest

    Predefinito

    Citazione Originalmente inviato da nfsmostwanted
    Spiegami meglio questo metodo più sicuro.

    P.S.In modo semplice e chiaro
    Quello che intendo io è che magari potresti, ad esempio, avere un file che memorizza informazioni che NON vuoi che siano accessibili, che per esempio si chiama informazioni.php,
    è quindi sufficiente che chiunque vada all'indirizzo index.php?pagina=informazioni e riesce senza problemi a leggerlo.
    Se invece tu metti il prefisso pag_ ad ogni pagina che vuoi rendere disponibile (ad esempio pag_home.php, pag_links.php, ecc.) e modifichi di conseguenza lo script
    Codice PHP:
    $pagina = 'mod_' . $_GET['pagina'] . '.php';
    include(
    $pagina);
    In questo modo sarà possibile accedere solo ai file .php che comincino con pag_
    L'unico accorgimento è di non chiamare nessuna cartella con un nome che cominci per pag_, altrimenti la protezione viene tranquillamente superata con index.php?pagina=cartella/file
    che visualizza il file pag_cartella/file.php

    Spero di essere stato chiaro, se ti servono altre informazioni chiedi pure.

  7. #7
    Guest

    Predefinito

    Allora,
    se ho capito bene,
    devo creare prima una pagina chiamata,per esempio,info_link.php con all'interno
    Codice HTML:
    link1|pagina.html
    link2|pagina2.html
    Però non ho capito cosa intendi con link1|pagina.html...

    Nel caso io dovessi creare quelle pagine dette prima(home.php,cerca.php,ecc...)cosa dovrei scrivere all'interno di questa pagina?

    L'array
    Codice HTML:
    $pag = array(); 
    $file = 'pagine.txt'; 
    $file = file($file); 
    for( $i = 0; $i < count($file); $i++ ) 
    { 
        $page = explode('|', $file[$i]); 
        $pag[$page[0]] = $page[1]; 
    }  
    deve essere inserito nella pagina index.php?
    Se si in quale posizione precisa?

    Poi l'ultimo array
    Codice HTML:
     if( in_array($_GET['pagina'], $pag) ) 
    { 
        include($pag[$_GET['pagina']]); 
    }  
    dove devo inserirlo?

  8. #8
    Guest

    Predefinito

    nel file .txt c'è a destra il nome che va messo nel link, a sinistra dopo | ci va messo il nome della pagina.
    il resto del codice lo metti nella index.php

  9. #9
    Guest

    Question

    Citazione Originalmente inviato da jostock
    nel file .txt c'è a destra il nome che va messo nel link, a sinistra dopo | ci va messo il nome della pagina.
    il resto del codice lo metti nella index.php
    Quindi nel file txt dovrei scrivere questo?
    Codice HTML:
    Cerca|index.php?pagina=Cerca/cerca.php
    News|index.php?pagina=News/news.html.html
    Archivio News|index.php?pagina=News/Archivio/archivionews.php
    Home|index.php?pagina=home.php
    Però devo farlo con tutti i link presenti nel menù.Giusto?

  10. #10
    Guest

    Predefinito

    non è proprio così:

    Codice:
    Cerca|Cerca/cerca.php
    News|News/news.html
    ................
    devi mettere il nome del file.

  11. #11
    Guest

    Predefinito

    Ho creato il file links.txt,con scritto quei 4 link,modificato come mi hai detto.

    Poi ho fatto la index.php in questo modo:
    Codice HTML:
    <html>
    <head>
    <title>NfSWARS - Need for Speed WARS!</title>
    
    
    <style type="text/css">
    <!--
    body,td,tr,table {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 10px;
    }
    body {
    margin-left: 0px;
    margin-top: 0px;
    margin-right: 0px;
    margin-bottom: 0px;
    }
    a, a:hover, a:visited {
    text-decoration: none; font-weight: bold
    }
    a, a:visited {
    color: #FFF
    }
    a:hover {
    color: #03F
    }
    a {
    font-weight: bold;
    }
    body {
    color:#FFF
    }
    .txtfin {font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 10px color:white;
    }
    -->
    
    //Inizio array
    $pag = array(); 
    $file = 'links.txt'; 
    $file = file($file); 
    for( $i = 0; $i < count($file); $i++ ) 
    { 
        $page = explode('|', $file[$i]); 
        $pag[$page[0]] = $page[1]; 
    }
     if( in_array($_GET['pagina'], $pag) )
    {
        include($pag[$_GET['pagina']]);
    }  
    //Fine array
    
    
    </head> 
    <body style=" background-color: #000000">
    <table width="900" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr align="center" valign="top">
    <td colspan="3"><span class="txtfin">
    <? include("top.html"); ?>
    </span></td>
    </tr>
    <tr>
    <td width="150" align="center" valign="top"><span class="txtfin">
    <? include("sinistra.html"); ?>
    </span></td>
    <td width="600" align="center" valign="top"><span class="txtfin">
    <? include("banner.html"); ?>
    <? include("$pagina"); ?>
    </span></td>
    <td width="150" align="center" valign="top"><span class="txtfin">
    <? include("destra.html"); ?>
    </span></td>
    <table width="900" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr align="center" valign="top">
    <td colspan="3"><span class="txtfin">
    <? include("sub.html"); ?>
    </span></td>
    </tr>
    </table>
    </body>
    </html>
    In grassetto ho evidenziato quell'array che mi hai indicato in precedenza.


    Quindi adesso dovrei essere in grado di poter indicare una pagina in questo modo:
    index.php?pagina=Cerca

    Giusto?

  12. #12
    L'avatar di Xsescott
    Xsescott non è connesso AlterGuru
    Data registrazione
    08-02-2004
    Messaggi
    1,413

    Predefinito

    ci sono tanti metodi grezzicelli per risolvere il problema sul fatto che le inclusioni devono passare tutte da una determinata pagina..
    metti tutte le pagine nella cartella "contenuti",ad esempio.
    poi fai..
    pagina principale = (index.php)
    pagine da includere residenti nella cartella(contenuto) = (primapagina.php,secondapagina.php,terzapagina.php )
    Codice PHP:
    <?php

    if(isSet($_GET['pippo'])) {

    $pippo=$_GET['pippo'];

    }

    else {

    $pippo=NULL;

    }


    if(
    $pippo!=NULL) {

    if(
    file_exists("contenuto/$pippo.php")){

    echo
    "<center>";

    include(
    "contenuto/$pippo.php");

    echo
    "</center>"; }

    if(!
    file_exists("contenuto/$pippo.php")) {

    echo
    "<center>pagina inesistente"



    ."</center>";}

    }
    else {
    echo
    "<center>";
    include(
    "contenuto/primapagina.php");
    echo
    "</center>";
    }

    ?>
    richiama cosi: index.php?pippo=secondapagina

    1.se fai dei test noterai che se la get è nulla ti riporta a primapagina.php
    2.se gli passi una query diversa da quelle esistenti nella directory ti avverte

    credo che per i tuoi bisogni vada più che bene,poi è codice abbastanza semplice da capire.

    cmq un'altra semplice alternativa sarebbe quella di inserire una variabile con una chiave nella index.php
    e poi in primapagina.php,secondapagina.php,terz... fai un controllo se esiste o meno quella variabile e puoi esser sicuro che le inclusioni avverranno solo se le pagine vengno filtrate dalla index.
    spero di esser stato chiaro..ciao

    Non sei un neofita, usa gli appositi tag per il codice!


    EDIT: scusa seneca ma stavo di fretta.
    Ultima modifica di funcool : 16-07-2007 alle ore 08.45.03
    "Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix


    [ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
    consoliwebsite.altervista.org

  13. #13
    Guest

    Post

    Citazione Originalmente inviato da jostock
    io farei cosi:
    ti crei un file di testo strutturato cosi:
    Codice:
    link1|pagina.html
    link2|pagina2.html
    con il php crei un array di pagine da includere:

    Codice PHP:
    $pag = array();
    $file = 'pagine.txt';
    $file = file($file);
    for(
    $i = 0; $i < count($file); $i++ )
    {
    $page = explode('|', $file[$i]);
    $pag[$page[0]] = $page[1];
    }
    infine includi il file solo se è nell'array creato:

    Codice PHP:
    if( in_array($_GET['pagina'], $pag) )
    {
    include(
    $pag[$_GET['pagina']]);
    }
    Ho fatto come hai detto...ekko la "index.php"
    Codice PHP:
    <?
    $pag
    = array();
    $file = 'pagine.txt';
    $file = file($file);
    for(
    $i = 0; $i < count($file); $i++ )
    {
    $page = explode('|', $file[$i]);
    if (isset(
    $page[1]))
    $pag[$page[0]] = $page[1];
    }
    ?>
    <?
    if( in_array($_GET['id'], $pag) )
    {
    include(
    $pag[$_GET['id']]);
    }
    else {
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>nomesito - Home</title>
    <link rel="stylesheet" href="style.css" type="text/css" media="screen" />
    </head>

    <body>

    <div id="wrapper">
    <div id="header">
    <div class="header" id="header2">
    <div align="center">nomesito</div>
    </div>
    </div>

    <div id="content">
    <div class="entry">
    <h1><a href="#">Lorem Ipsum</a></h1>
    <div class="date">14th February 2007</div>
    <div class="entrybody">
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
    </div>
    <div class="entrymeta">Posted in <a href="#">Templates</a> &middot; <a href="#">3 Comments</a></div>
    </div>

    <div class="entry">
    <h1><a href="#">Lorem Ipsum</a></h1>
    <div class="date">14th February 2007</div>
    <div class="entrybody">
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
    </div>
    <div class="entrymeta">Posted in <a href="#">Templates</a> &middot; <a href="#">3 Comments</a></div>
    </div>

    </div>

    <div id="sidebar">

    <h2>Men&ugrave;</h2>
    <ul>
    <li><a href="/index.php">HomePage</a></li>
    <li><a href="index.php?id=info">Info</a></li>
    <li><a href=""><s>Forum</s></a></li>
    <li><a href="/index.php?id=download">Download</a></li>
    <li><a href="/index.php?id=contattami">Contattami</a></li>
    <li><a href="/index.php?id=credits">Credits</a></li>
    </ul>
    <h2>Siti Amici</h2>
    <ul>
    <li><a href="#">Linkage</a></li>
    <li><a href="#">Linkage</a></li>
    <li><a href="#">Linkage</a></li>
    <li><a href="#">Linkage</a></li>
    <li><a href="#">Linkage</a></li>
    </ul>
    </div>

    <div id="footer">
    <p>&copy; 2007 nomesito.Tutti I Diritti Riservati.</p>
    </div>
    </div>

    </body>
    </html>
    <?php
    }
    ?>
    ed questo è il contenuto del file "pagine.txt"
    Codice:
    info|info.html
    l'url dovrebbe funzionare kosì: http://sim.altervista.org/index.php?id=info
    Grazie.Ciao Davide ^_^

Regole di scrittura

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