[php] - get e htaccess

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

[php] - get e htaccess

Messaggio da treled »

Salve, vorrei sapere come posso indagare chi è la colpa che non funziona il $_GET["sidebar"] richiamandolo in questo caso:
about?sidebar=on
mi dovrebbe richiamare la template che ha la sidebar .

vi posto alcuni codici:

Prima vorrei dire che layout e pages php sono classi che ho fatto io. ma fanno solamente fare degli include e stampare il titolo al browser.

Codice: Seleziona tutto

<?php
include('inc.php');
include('data/pages.php');
include("classs/class.layout.php");
$layout = new Layout;

$url = (isset($_GET["url"])) ? trim ((string)$_GET["url"]): 'home';

if(empty($url))
{
    $title = "Accesso non consentito";
    $layout->setTitle($title);
    $layout->startBody();
    echo "<div id=\"f\"><!-- Inizio f -->\n";   
    echo "<div id=\"pages\"><!-- Inizio Pages -->\n";      
    echo "<h1 class='center'>?</h1>";
    echo "</div><!-- Fine pages -->\n";
    echo "</div><!-- Fine f -->\n";
    $layout->endBody();
    echo $layout->render("layout/template.php");
}else
{
    if(preg_match("/^[a-z0-9-_]+$/i", strtolower($url)))
    {
            if(file_exists(strtolower("./pages/".strtolower($url).".php")))
            {
                    
                if (array_key_exists(''.$url.'', $arrPages)) 
                {
                    $title =  $arrPages[''.strtolower($url).''];
                }else
                {
                        $title = "";
                }
                    $layout->setTitle($title);
                    $layout->startBody(); 
                    echo "<div id=\"f\"><!-- Inizio f -->\n";   
                    echo "<div id=\"pages\"><!-- Inizio Pages -->\n";                     
                    include("./pages/".strtolower($url).".php");
                    echo "</div><!-- Fine pages -->\n";
                    echo "</div><!-- Fine f -->\n";
                    $layout->endBody();
                    
                    if(empty($_GET["sidebar"]) == 'on'){
                        echo $layout->render("layout/template.php"); 
                    }else {  
                        echo $layout->render("layout/template_sidebar.php");                            
                    }

            }else
            {
                $title = "404 not found";
                $layout->setTitle($title);
                $layout->startBody();
                echo "<div id=\"f\"><!-- Inizio f -->\n";   
                echo "<div id=\"pages\"><!-- Inizio Pages -->\n";      
                echo "<h1 class='center'>Pagina non trovata</h1>";
                echo "</div><!-- Fine pages -->\n";
                echo "</div><!-- Fine f -->\n";
                $layout->endBody();
                echo $layout->render("layout/template.php");

            }
        
    }else
    {   
        $title = "?";
        $layout->setTitle($title);
        $layout->startBody();
        echo "<div id=\"f\"><!-- Inizio f -->\n";   
        echo "<div id=\"pages\"><!-- Inizio Pages -->\n";      
        echo "<h1 class='center'>?</h1>";
        echo "</div><!-- Fine pages -->\n";
        echo "</div><!-- Fine f -->\n";
        $layout->endBody();
        echo $layout->render("layout/template.php");

        
    }
}
?>
questo è l'htaccess mi è stato suggerito da zoff mesi fa:

Codice: Seleziona tutto

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
ErrorDocument 400 /errors/error.php
ErrorDocument 401 /errors/error.php
ErrorDocument 403 /errors/error.php
ErrorDocument 404 /errors/error.php
ErrorDocument 500 /errors/error.php
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.+) /index.php?url=$1 [L]
</IfModule>
avete idea? come fare?

grazie mille.

EDIT: ho fatto anche cosi:

Codice: Seleziona tutto

 switch ((isset($_GET['s']) ? $_GET['s'] : '')) {
                        case 'on':
                            echo $layout->render("layout/template_sidebar.php");  
                            break;
                        default:
                            echo $layout->render("layout/template.php");                           
                            break;
                    }
mi sa che è colpa della espressione regolare . come devo fare ? grazie mille di nuovo.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [php] - get e htaccess

Messaggio da Zoff »

Sostituisci:

Codice: Seleziona tutto

RewriteRule (.+) /index.php?url=$1 [L]
con

Codice: Seleziona tutto

RewriteRule ([^\?]+)\??(.*) /index.php?url=$1&$2 [L]
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 10 ospiti