Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: ajax e window.location

  1. #1

    ajax e window.location

    Con una verifica sull'oggetto window location riesco a impedire di aprire uno script php direttamente nella finestra? Voglio che sia aperto solo tramite ajax.

    Esempio sono nella pagina caio.php dove con un link eseguo una richiesta ajax al server della pagina tizio.php e il risultato viene messo in un div tramite innerhtml. Non voglio che se l'utente digiti nella barra direttamente lo script questo si apra.

    E' possibile?

    Grazie, ciao
    www.staffords.it
    php work in progress database di staffordshire bull terrier(razza di cani)
    http://tonyz.altervista.org/

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    ad esempio puoi evitare che una pagina php venga chiamata direttamente se inserisci queste righe all'inizio del file

    codice:
        $this_file = str_replace('\\', '/', __FILE__);
        if ($_SERVER["SCRIPT_FILENAME"] == $this_file) {
            header('HTTP/1.0 403 Forbidden');
            exit();
        }
    ps. Qui siamo Off-topic... fatti spostare sul forum PHP

    Ciao
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Grazie fcaldera. Scusami ma non sono un esperto.

    Non credo però che sia un problema del server, il quale non penso sia in grado di distinguere se la chiamata allo script è tramite barra indirizzo o link ajax in quanto, se non ho capito male, sono entrambe http request.

    Guarda quest'esempio:
    http://tonyz.altervista.org/profile.php

    e questo è lo script che apro con ajax:
    http://tonyz.altervista.org/pedigree.php

    Io voglio che se un utente cerca di fare il furbino e voglia aprire direttamente il secondo script gli venga un errore perchè voglio che possa aprirlo solo dalla prima pagina con un link che effettua la ajax call.

    Mi/vi chiedevo se riesco a bloccare l'accesso diretto a pedigree.php, credo che se si puo fare si possa fare solo client-side.


    www.staffords.it
    php work in progress database di staffordshire bull terrier(razza di cani)
    http://tonyz.altervista.org/

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    hai provato ad inserire le righe che ti ho postato nel file pedigree.php??
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    ora provo e ti faccio sapere
    www.staffords.it
    php work in progress database di staffordshire bull terrier(razza di cani)
    http://tonyz.altervista.org/

  6. #6
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    in alternativa potresti passare in post un parametro alla pagina quando fai la chiamata e nel file pedigree controllare l'esistenza del parametro con $_POST.
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  7. #7
    Allora ho aggiunto un backslash al primo argomento nello str_replace altrimenti venina un errore di parse (non so se è corretto quello che ho fatto).

    codice:
    $this_file = str_replace('\\', '/', __FILE__);
        if ($_SERVER["SCRIPT_FILENAME"] == $this_file) {
            header("HTTP/1.0 403 Forbidden");
            exit();
        }
    Però mi apre lo stesso lo script come puoi verificare anche tu
    http://tonyz.altervista.org/pedigree.php
    www.staffords.it
    php work in progress database di staffordshire bull terrier(razza di cani)
    http://tonyz.altervista.org/

  8. #8
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    e' saltata una backslash nella prima riga... prova a fare un quote del post

    Originariamente inviato da fcaldera
    in alternativa potresti passare in post un parametro alla pagina quando fai la chiamata e nel file pedigree controllare l'esistenza del parametro con $_POST.
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  9. #9
    ho corretto così ma non ne blocca l'apertura diretta:

    codice:
    $this_file = str_replace('\\', '/', __FILE__);
        if ($_SERVER["SCRIPT_FILENAME"] == $this_file) {
            header("HTTP/1.0 403 Forbidden");
            exit();
        }
    il fatto di mandare un parametro per post è qualcosa che prenderò in considerazione se non ci sono altri metodi più immediati. Grazie dell'aiuto che mi stai dando.
    www.staffords.it
    php work in progress database di staffordshire bull terrier(razza di cani)
    http://tonyz.altervista.org/

  10. #10
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    in teoria passando i dati in post dovresti essere abbastanza sicuro... anche chiamando la pagina direttamente non puoi passargli i parametro in querystring perchè poi leggi in $_post
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

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.