Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    passaggio di parametri da link

    Ciao a tutti, mi sono appena registrato al forum. Ho studiato PHP e ho inziato solo da poco a realizzare qualche script. Non avendo ancora molta esperienza col linguaggio è possiblie che dirò qualche inesattezza o farò domande banali.
    Volevo chiedere riguardo a un codice che vorrei inserire in un sito (che ho già realizzato).
    All'interno di una pagina del sito (chiamamola pagina.php) dovrei mettere alcuni link, con dei nomi di persona. Vorrei che cliccando su ciascuno di questi link venga passato alla pagina di destinazione (elabora.php) il nome contenuto nel link stesso, in modo da utilizzare questo parametro per fare una ricerca ed estrazione dal database di informazioni relative a quella persona da caricare nella pagina elabora.php.
    In pratica cliccando sul collegamento 'Mario Rossi' si aprirebbe la pagina elabora.php con sue altre informazioni, cliccando su 'Franco Verdi' si aprirebbe la stessa pagina con le informazioni di quest'ultimo ecc.
    Vorrei evitare l'utilizzo del metodo GET e di dover creare un bottone di submit per fare l'invio dei dati. Con le sessioni ho pensato che non si potesse fare perchè servirebbero variabili di sessioni specifiche per ogni link. Avevo il dubbio che si potesse fare con Ajax, che attualmente non conosco molto bene.
    Quindi chiedo a voi: quale potrebbe essere un metodo sicuro per avere quel risultato?
    Un'altra cosa: se il metodo che proponete può andar bene anche tra pagine di un sito Wordpress o va fatto qualcos'altro in tale caso.
    Grazie in anticipo.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Non c'è alternativa a GET per passare parametri da un link.

    Ogni link dovrai farlo nella forma
    urlencode("elabora.php?nome=mario rossi");

    usando appunto la funzione urlencode() visto che prevedi degli spazi nel parametro che passi, automaticamente saranno gestiti in modo corretto.
    Ultima modifica di Alhazred; 09-10-2017 a 11:07

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Agiungo qualche altra cosa.
    Usare nome e cognome per recuperare i dati di una persona non è una buona scelta, che fai se ci sono 2 o più Mario Rossi? I dati di chi prendi? Come fai a decidere quale sia quello giusto? In questi casi va usato un id univoco, solitamente l'indice della tabella che contiene i dati delle persone.

    Se proprio non vuoi usare get, e quindi non userai neanche dei link, puoi usare AJAX, ma devi saperlo fare e a quanto dici è una cosa che attualmente non conosci.
    Con AJAX dovresti comunque creare un pulsante o altro elemento HTML che contenga come informazione l'id della persona, al click di tale elemento devi avere una funzione Javascript da chiamare e che recuperi l'id dell'elemento cliccato.
    La funzione JS dovrà inserire l'id in un parametro POST (visto che non vuoi usare GET) ed inserirlo all'interno di una richiesta verso lo script elabora.php

    Usando AJAX però resterai sulla stessa pagina, quindi non verrà visualizzata la pagina elabora.php, questa dovrà in questo caso solo recuperare i dati della persona e restituirli alla chiamata AJAX, la quale a sua volta dovrà occuparsi di mostrarli sulla pagina corrente (la stessa nella quale hai cliccato il pulsante o chi per esso).

    Se hai domande riguardo l'uso di AJAX, chiedi nella sezione Javascript, perché non è argomento PHP.

    A mio avviso ti stai solo complicando la vita non volendo usare un link con parametri GET.
    Ultima modifica di Alhazred; 09-10-2017 a 14:19

  4. #4
    Ciao, grazie per la risposta.
    Non volevo usare l'invio tramite GET perchè ho letto che è ritenuto un metodo poco sicuro, visto che i dati sono visibili nella stringa dell'URL, però nel caso in questione suppongo non sarebbe un problema tanto al massimo scrivo un ID o dei dati che comunque già pubblico sul sito (se usassi il nome per esempio).
    Vorrei fare solo una domanda che mi è venuta in mente leggendo la parte su AJAX: per caso è possibile usare un metodo simile non rimanendo sulla stessa pagina? Cioè usare la funzione JS richiamata quando clicco sul link per inviare tramite POST l'id (selezionato tramite getElementById) alla pagina elabora.php e mostrare in questa i risultati presi dal DB.
    Se è realizzabile una soluzione di questo tipo magari apro una discussione nella sezione JS per chiedere maggiori informazioni.

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    No, le chiamate AJAX sono asincrone e non determinano l'apertura di una nuova pagina, AJAX si usa appositamente per evitare di ricaricare le pagine e fare tutto sulla stessa in cui risiede la funzione.
    Al limite dovresti poi eseguire un redirect da JS passando però anche i dati che hai ricevuto da elabora.php, che sarebbe un'implementazione da fucilazione sul posto.

    Lascia perdere AJAX e tutto il resto, passa l'id tramite GET alla pagina elabora.php
    Tutti i siti da qualche parte passano parametri nell'URL, pericolosi o no dipende da come poi li gestisci nel codice PHP, devi validare i dati che arrivano, per esempio se usi un id, verifica che ti arrivi un numero intero positivo e non altro.

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.