Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    11

    chiamare php da js - dettaglio

    ciao,

    cercando in rete ho visto che e' possibile "chiamare" uno script php
    da javascript. Ho trovato anche una vecchia discussione su questo
    forum, ma non sono sicuro di capire tutti gli aspetti.
    Forse ce ne sono delle altre, ma per qualche motivo non riesco a utilizzare
    la funzionalita' "cerca nel forum" (mi restituisce sempre una pag bianca).
    Quindi scusate se l'argomento e' trito.

    In breve: facendo degli esperimenti con php e mysql ho creato un
    rudimentale script (visits.php) che registra i visitatori.
    Se lo chiamo da un altro documento php (A.php) riesco a registrare in una tabella
    l'ip del visitatore e la pagina visitata (A.php).

    Ora il mio sito web e' perlopiu' in html, quindi mi sono chiesto se fosse
    possibile usare visits.php senza trasformare l'intero sito in php.
    Ho visto che se inserisco in un documento html (B.html) una cosa del genere

    <script language="javascript" src="http://xxx.xxx.xxx/xxx/visits.php"> </script>

    qualcosa in effetti succede. La visita viene effettivamente registrata, e l'ip
    appare corretamente. Pero' come "pagina visitata" non risulta B.html (ovvero
    la pagina che contiene il codice js) bensi' la pagina php che conta le visite
    (visits.php). Il motivo probabilmente e' questo: la pagina visitata e' $_SERVER['PHP_SELF']
    quindi se visits.php e' chiamato per inclusione da un altro php, allora quest'ultimo e'
    correttamente segnato come pagina visitata.
    Da quel che capisco invece, se visits.php e' chiamato come sopra, e' "standalone" e
    da' se stesso come pagina visitata.

    Un modo un po' becero per aggirare questo fatto e' cambiare il js cosi':

    <script language="javascript" src="http://xxx.xxx.xxx/xxx/visits.php?url=XXX"> </script>

    dove XXX e' il nome della pagina html. Fatto questo, XXX puo' essere semplicemente
    recuperato da visits.php con un GET.

    Dico becero perche' per ogni pagina che voglio tracciare devo mettere il nome opportuno
    al posto di XXX. Un po' macchinoso.
    Pur nella mia ignoranza di js, credo sia possibile creare uno script "universale", che insomma inserisca automaticamente il nome della pagina al posto di XXX.

    Io ho provato una cosa tipo

    <script language="javascript" src="http://xxx.xxx.xxx/xxx/visits.php?url="+location.href> </script>

    ma non funziona. Forse pretendo troppo da una cosa tipo src="...".
    Qualcuno sa darmi qualche consiglio (oltre a fare tutto in php, cosa che prima o poi faro').
    Come faccio a far si' che sia js a inserire automaticamente il nome della pagina corrente?


    Grazie

    F

  2. #2
    puoi provare con AJAX, se hai dei rudimenti di JS (e magari usi una libreria di JS) dovrebbe essere facile.
    I DON'T Double Click!

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    11
    Ciao e grazie del suggerimento

    come avrai capito dai miei patetici tentativi di script, non ho praticamente rudimenti di
    js. Inoltre, prima che tu lo nominassi, ero completamente ignaro di AJAX.
    Sembra interessante, ci guardo.
    Comunque guardando questo vecchio post mi pare che la soluzione al mio problema
    possa essere a portata di mano, anche se faccio fatica a districarmi nella sintassi di js.
    Ci dev'essere un modo per rendere l'argomento di src dipendente dal file html in cui
    lo script e' inserito, anche se probabilmente il mio tentativo e' ridicolo.

    Ciao e ancora grazie

    F

  4. #4
    Ivan Venuti
    Vuoi scaricare alcuni articoli sulla programmazione, pubblicati su riviste di informatica? Visita http://ivenuti.altervista.org/articoli.htm. Se vuoi imparare JavaScript leggi il mio libro: http://www.fag.it/scheda.aspx?ID=21754 !

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    11
    Interessante, grazie.
    Al momento non mi e' chiaro che possa funzionare anche con uno script php,
    ma cerchero' di studiarlo.

    ciao

    F

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    11
    Ho cercato di capire ajax, ma a occhio e croce e' fin troppo per risolvere
    il mio problema. Mi da' l'impressione di uccidere una mosca a cannonate.

    In caso qualcuno fosse interessato, ho trovato un metodo "quick and dirty" per
    fare quello che mi serve. Ho usato "document.write" per scrivere lo script,
    cosa che probabilmente sembrera' ovvia agli esperti di js.

    Codice PHP:
    <script type="text/javascript">
    document.write('<scr'+'ipt type="text/javascript" src="visits.php?url='location.pathname 
    +'"></scr'+'ipt>');
    </script> 
    Probabilmente non funziona su tutti i browser, e sicuramente c'e' un metodo piu'
    canonico. Direi che la strada da usare sia qualcosa come createelement("script").
    Pero' e' un inizio.

    Appena ho tempo cerco di capire come fare le cose in maniera piu' pulita.

    F

    PS non mi e' ancora chiarissimo perche' sia necessario dividere il tag '<script type = ...' in
    '<scr' + 'ipt type = ...', pero' se non lo faccio non funziona.
    Per ora adotto un approccio pragmatico...

  7. #7
    e risolvere il problema facendo un iframe?
    I DON'T Double Click!

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    11
    sicuramente e' un buon consiglio... Ma non ho idea di cosa sia un iframe

    La verita' e' che sono proprio a digiuno di js... E, come e' ovvio, non lo sto imparando
    sistematicamente. Forse dovrei, ma il tempo e' quello che e', e tutto sommato
    al momento mi interessa solamente per questo task specifico (chiamare uno script
    php includendo "dinamicamente" il nome della pagina chiamante).

    Comunque grazie, ci guardo.

    F

  9. #9
    NON è JS. Un iframe è un elemento HTML che permette di includere in un documento HTML una pagina proveniente da qualunque altra fonte (anche da un'altro dominio). Quindi cosa fai? Nella pagina metti:

    <iframe width="0" height="0" frameborder="0" src="visits.php?url=<?=$_SERVER['PHP_SELF']?>"></frame>

    Questo effettuerà una chiamata a visits.php passandogli come url la pagina in uso. (ehm ovviamente se usi mod_rewrite il giochetto non fuziona dato che PHP_SEFL ritorna il nome delle script PHP in utilizzo)
    I DON'T Double Click!

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    11
    Originariamente inviato da artorius
    NON è JS. Un iframe è un elemento HTML che permette di includere in un documento HTML una pagina proveniente da qualunque altra fonte (anche da un'altro dominio).
    Ehm... Questo dimostra che non sono a digiuno solo di JS!

    Quindi cosa fai? Nella pagina metti:

    <iframe width="0" height="0" frameborder="0" src="visits.php?url=<?=$_SERVER['PHP_SELF']?>"></frame>

    Questo effettuerà una chiamata a visits.php passandogli come url la pagina in uso. (ehm ovviamente se usi mod_rewrite il giochetto non fuziona dato che PHP_SEFL ritorna il nome delle script PHP in utilizzo)
    Cioe' intendi dire che alla fine si comporterebbe come il primo esempio che ho fatto,
    dove visits.php non determinava la pagina chiamante tramite GET ma tramite $_SERVER?

    In realta' ho fatto subito un esperimento col tuo codice, e mi pare che visits.php non
    venga nemmeno chiamato (lo dico perche' db delle visite non viene proprio aggiornato,
    nemmeno col nome dello script php come suggerisci sopra).

    Ma questa tua soluzione non e' in qualche modo equivalente ad includere un codice php
    in una pagina html? Cosa che, secondo la mia (scarsa, ancora una volta) esperienza non
    produce alcun effetto...
    In effetti se cambio l'estensione della pagina da html a php il tuo metodo funziona.
    Ma in quel caso mi pare che non ci sia bisogno dell'iframe... E io volevo evitare di cambiare
    tutte le estensioni (e i link) del mio sito. Ad un certo punto lo rifaro' daccapo, probabilmente
    in php. Ma per ora volevo solo aggiungere una funzionalita' alle pagine html senza fare troppi
    cambiamenti.

    Comunque grazie dei suggerimenti, e tieni conto che se dico delle cavolate e' perche'
    sono proprio un neofita. Mi occupo di un sito a tempo perso, non per lavoro.

    F

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.