Blocco pagine dirette

  • Creatore Discussione Creatore Discussione _LAIL_
  • Data di inizio Data di inizio

_LAIL_

Utente Attivo
19 Set 2013
57
0
6
Salve a tutti ho bisogno della vostra grande conoscenza (sono una nabba in queste cose).

Gironzolando un po in rete e leggendo un po di guide sono riuscita a mettere insieme questa pagina raccimomando pezzi di codice.

In pratica il sistemino funziona per metà se la pagina e errata mi dice che non posso accedere e mi rimanda alla pagina da me indicata
se invece la pagina e esatta non mi visualizza il resto della pagina dove sbaglio??

PHP:
<?php if(empty($_SERVER['HTTP_REFERER'])) { 
 if($_SERVER['HTTP_REFERER'] != 'http://miosito/pagina1.php' || $_SERVER['HTTP_REFERER'] != 'http://miosito/pagina2.php'){  

echo "Non puoi accedere direttamente alla pagina
<meta http-equiv='refresh' content='5; miosito/index.php'>";  




} else { 

if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST['elimina'])) {
    $check = $_POST['check'];
    foreach ($check as $delete) {
        if (unlink("slideshow/" . $delete)) {
            echo "File cancellati: " . $delete;
            header('location: galleria.php');
        } else {
            echo 'Errore';
        }
    }
}

?>


<br><br><br>
  
        <table>
            <form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
                <?php
                $dirname = "slideshow";
                $images = scandir($dirname);
                sort($images);
                foreach ($images as $file) {
                    if ((substr($file, -5) == ".jpeg") || (substr($file, -4) ==
".jpg") || (substr($file, -5) == ".JPEG") || (substr($file, -4) == ".JPG") ||
(substr($file, -4) == ".png")) {
                        echo <<<HTML
                  <tr>
                    <td>
                        <input type="checkbox" name="check[]" value="$file" />
                    </td>
                    <td><font color="#000000"><br>
					$file <br><p align="center"></p><br>
                        <img src="slideshow/$file" alt="" oncontextmenu="return
false;" style="border: 1px solid black;" />
                    </font> </td>
                 </tr>
HTML;
                    }
                }
	
                ?>
			<tr>
               	<br>
                    <td>
                        <input type="submit" value="Elimina" name="elimina" />
                    </td>
                </tr>
            </form>
        </table>
    </body>
</html>
 <?php
	    }
}		
?>
 
Ciao, la tua prima istruzione
PHP:
if (empty($_SERVER['HTTP_REFERER'])) {
vuol dire " se la variabile $_SERVER['HTTP_REFERER'] è vuota vai avanti
per questo quando non è vuota non fa niente
Io la toglierei direttamente
 
Ciao criric grazie per la risposta ma nn ho capito scusami ma sono alquanto ebete sulla questione il mio problema e che anche arrivando dalla pagina esatta non mi apre la pagina cioe non mi legge il codice:( .
 
Non ti legge il codice perchè non supera la condizione che ti ho indicato
elimina tutta la riga e anche la corrispondente parentesi } di chiusura
 
Adesso in entrambe i casi mi dice che non posso accedere


PHP:
<?php   
 if($_SERVER['HTTP_REFERER'] != 'http://miosito/pagina1.php' || $_SERVER['HTTP_REFERER'] != 'http://miosito/pagina2.php'){  

echo "Non puoi accedere direttamente alla pagina
<meta http-equiv='refresh' content='5; miosito.it/index.php'>";  




} else { 

if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST['elimina'])) {
    $check = $_POST['check'];
    foreach ($check as $delete) {
        if (unlink("slideshow/" . $delete)) {
            echo "File cancellati: " . $delete;
            header('location: galleria.php');
        } else {
            echo 'Errore';
        }
    }
}

?>


<br><br><br>
  
        <table>
            <form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
                <?php
                $dirname = "slideshow";
                $images = scandir($dirname);
                sort($images);
                foreach ($images as $file) {
                    if ((substr($file, -5) == ".jpeg") || (substr($file, -4) ==
".jpg") || (substr($file, -5) == ".JPEG") || (substr($file, -4) == ".JPG") ||
(substr($file, -4) == ".png")) {
                        echo <<<HTML
                  <tr>
                    <td>
                        <input type="checkbox" name="check[]" value="$file" />
                    </td>
                    <td><font color="#000000"><br>
					$file <br><p align="center"></p><br>
                        <img src="slideshow/$file" alt="" oncontextmenu="return
false;" style="border: 1px solid black;" />
                    </font> </td>
                 </tr>
HTML;
                    }
                }	
                ?>
			<tr>
               	<br>
                    <td>
                        <input type="submit" value="Elimina" name="elimina" />
                    </td>
                </tr>
            </form>
        </table>
    </body>
</html>
 <?php 
	 }
	 ?>
 
ora nella prima condizione
PHP:
 if($_SERVER['HTTP_REFERER'] != 'http://miosito/pagina1.php' || $_SERVER['HTTP_REFERER'] != 'http://miosito/pagina2.php'){
cambia
Codice:
||
con
Codice:
&&
 
A me funziona, beh passato il controllo non funziona più niente però la if funziona
Sicura degli indirizzi?
prova a mettere un var dump del referer e vedi se ti stamp quello che ti aspetti
PHP:
var_dump($_SERVER['HTTP_REFERER']);
 if($_SERVER['HTTP_REFERER'] != 'http://miosito/pagina1.php' && $_SERVER['HTTP_REFERER'] != 'http://miosito/pagina2.php'){
 
Perfetto funziona era un errore nel url. :)))


Grazie sei stato gentilissimo e questo e un bel forum leggo molte cose qui.



mi daresti ancora un piccolo aiutino??


PHP:
<meta http-equiv='refresh' content='5; miosito.net/prova/index.php'>


quando fa il refresh mom prende questo miosito.net/prova/index.php

ma aggiunge il percorso del file iniziale sono in diversi punti i file come faccio a dargli un percorso assoluto senza che lui aggiunga altro??
 
Non credo di aver capito, cmq, se inizi il percorso con lo slash / parte dalla root del tuo sito
<meta http-equiv='refresh' content='5; /index.php'>
 
in pratica il file con il codice e in una root miosito.it/root1/file.php

mentre il refresh lo deve fare in miosito.it/root2/file.php



ora quando fa il refresh viene fuori cosi root1/miosito.it/root2/file.php

aggiunge il percorso del file.
 
ok allora avevo capito
metti lo slash all'inizio
Codice:
<meta http-equiv='refresh' content='5; /root2/file.php'>
 

Discussioni simili