Domanda

Sto sviluppando un'applicazione PHP per gestire gli ordini per una società. Per visualizzare un ordine l'URL è attualmente /orders/view/3502.

Non voglio che il numero d'ordine ID appaia nell'URL, così ho usato biblioteca crittografare di CodeIgniter per crittografare l'ID nell'URL. L'URL (dopo la crittografia) assomiglia /orders/view/AaffGdQQ.

Il problema che sto avendo è a volte l'ID criptato contiene una barra in avanti o un segno più, che non funzionano correttamente quando in un URL. CodeIgniter legge l'URL in base a barre, quindi, se l'ID criptato aveva una barra, si leggerebbe che come 2 variabili, non uno. Inoltre, oltre a segni sono interpretati come spazi negli URL.

Quindi, la mia domanda è: come posso crittografare la ID ed essere sicuri che la stringa non contiene un segno più o di una barra?

EDIT: ho avuto un'idea per vedere se l'ID criptato conteneva una barra o segno più, e se lo ha fatto, crittografare di nuovo. Per qualche motivo, ogni volta che l'ID è crittografato, è diverso, quindi questo dovrebbe funzionare.

È stato utile?

Soluzione

È possibile anche base64_encode (). Questo sarà anche rendere molto più a lungo e apparire "più sicuro". aggiunge anche uno strato di offuscamento.

Altri suggerimenti

Forse passare i dati attraverso cryped urlencode() sarebbe risolvere questo problema? Dopo averlo fatto, si dovrà intercettare i dati prima CodeIgniter fa, e urldecode() eseguire su di esso.

Solo una rapida idea, quindi buona fortuna!

Cercare alcuni personaggi che la crittografia non utilizza e sostituirlo loro come si adatta. Quando si utilizzano gli URL, annullarla.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top