phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.

Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.

Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.

Grazie ancora,
Carlo - Amministratore di phpBB Italia

Domanda su metodo GET

Area di discussione relativa al linguaggio di programmazione web più conosciuto. Il forum è dedicato anche a MySQL, la piattaforma di database più utilizzata con il PHP.
Rispondi
Dr.Joek\
Utente
Utente
Messaggi: 9
Iscritto il: 07/12/2015, 16:47
Versione: 3.1.5
Server: Windows
PHP: 1.4
Database: MySql

Domanda su metodo GET

Messaggio da Dr.Joek\ » 05/03/2016, 22:23

Salve,
spiego meglio quanto detto nel titolo.
Sto creando un forum dove ogni utente ha un profilo (come anche su sciax) c'è solo un problema.. Io quando per esempio si clicca sul profile dell'utente ho fatto in modo di reperirne il nome e poi recarmi al: localhost/viewProfile.php?pname= nome profile del tizio, (viewprofile è il file che si occupa di associare l'id e tutte le altre info dal nome e costruirne la pagina), la mia domanda è prettamente estetica, mi chiedo come posso fare apparire per esempio localhost/viewProfile/pname/ nome utente del tizio?
Come è su sciax, youtube, facebook etc etc
Grazie in anticipo.

Avatar utente
Sir Xiradorn
Grafico
Grafico
Messaggi: 1659
Iscritto il: 11/08/2009, 12:41
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.6.15
Database: MariaDB 10.1.9
Località: Lontano....
Contatta:

Re: Domanda su metodo GET

Messaggio da Sir Xiradorn » 05/03/2016, 22:45

Devi riscrivere il file .htaccess (che se non presente devi creare) se sei su apache. In questo devi vedere se la mod rewrite è attiva sul server (e quasi sicuramente lo è) e inserire questo codice

Codice: Seleziona tutto

RewriteEngine On    # Turn on the rewriting engine
RewriteRule ^viewProfile/pname/(.*)$  viewProfile.php?pname=$1    [NC,L]
Non sono proprio sicurissimo ma prova

EDIT fatto un test e credo funga bene
Sir Xiradorn
Immagine
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~

Immagine
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x

Dr.Joek\
Utente
Utente
Messaggi: 9
Iscritto il: 07/12/2015, 16:47
Versione: 3.1.5
Server: Windows
PHP: 1.4
Database: MySql

Re: Domanda su metodo GET

Messaggio da Dr.Joek\ » 05/03/2016, 23:16

Ho modificato l'htaccess aggiungendo il codice dato da te sopra. Ho provato ma non funziona, devo usare il vecchio format (^viewProfile.php?pname=1) ma provando con (^viewProfile/pname/1) non funziona. Cosa hai scritto per provare tu?

EDIT: Ho riprovato e ho visto che funziona, ora il problema non è più la pagina che la trova (infatti se al posto di pname scrivo: pnameee non la trova più) il problema ora è che se io scrivo ...../pname/1 lui non riesce a prelevare i dati da quell'id. Ho provato a fare un echo del $_GET['pname'] e non restituisce assolutamente nulla, invece il var_dump restituisce una stringa da 0 caratteri..
Cosa si può fare?

Dr.Joek\
Utente
Utente
Messaggi: 9
Iscritto il: 07/12/2015, 16:47
Versione: 3.1.5
Server: Windows
PHP: 1.4
Database: MySql

Re: Domanda su metodo GET

Messaggio da Dr.Joek\ » 06/03/2016, 0:32

PROBLEMA RISOLTO:
Bisogna aggiungere al .htaccess (local o generale) il seguente codice:

Codice: Seleziona tutto

RewriteEngine On    
RewriteRule ^profile/(.*)$  viewProfile.php?profile=$1    [NC,L]
Il carattere ^ sta a indicare il dominio e quindi la cartella root, le parentesi invece indicano una variabile, in questo caso la variabile può ospitare tutti i tipi di carattere, e dopo la parentesi il segno del dollaro per indicare che la variabile è là. Dall'altra parte c'è invece la vera directory con il: $1 che indica la variabile 1 quindi: (.*). Aggiungo che bisogna attendere 2-3 secondi prima che il server "metabolizzi" il nuovo .htaccess.

Avatar utente
Sir Xiradorn
Grafico
Grafico
Messaggi: 1659
Iscritto il: 11/08/2009, 12:41
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.6.15
Database: MariaDB 10.1.9
Località: Lontano....
Contatta:

Re: Domanda su metodo GET

Messaggio da Sir Xiradorn » 06/03/2016, 0:55

Ci sono un paio di errori enormi. ^ non è il dominio ma significa che fa il picking dall'inizio del link considerando come base di riscrittura la posizione attuale dello .htaccess stesso. Non è assolutamente il dominio. Per quello ci sono altre diciture.

Secondo e qua l'errore è il mio. O meglio lo è se il tuo codice non è sicuro e per prevenire injecting potresti usare qualcosa al posto di (.*) che ricordo essere una REGEX una espressione molto più consona ovvero
([a-zA-Z0-9_-\%]+)
Che è meglio perchè così non fai il parsing se non trova nulla e puoi filtrare strani caratteri. Quindi per la definizione migliore puoi fare così

Codice: Seleziona tutto

RewriteEngine On   
RewriteRule ^profile/([a-zA-Z0-9_-\%]+)/?$  viewProfile.php?profile=$1    [NC,L]
Inoltre il carattere /? significa che se per sbaglio fai così ovvero
http://localhost/profile/Xiradorn -> cerca Xiradorn
http://localhost/profile/Xiradorn/ -> cerca Xiradorn
in sostanza evita lo / se messo alla fine non era un errore.

Inoltre se hai una cosa del tipo viewProfile.php?pname=$1 puoi comunque riscriverla come

Codice: Seleziona tutto

RewriteEngine On   
RewriteRule ^profile/([a-zA-Z0-9_-\%]+)/?$  viewProfile.php?pname=$1    [NC,L]
Un consiglio impara le RegEx
Sir Xiradorn
Immagine
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~

Immagine
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x

Rispondi

Torna a “PHP - MySQL”

Chi c’è in linea

Visitano il forum: Nessuno e 47 ospiti