Un utente ha chiesto informazioni su Connections Business Directory di Wordpress

vCard e utf8 BOM

Un utente ha chiesto 👇

Ciao,

grazie per il tuo fantastico strumento.

Abbiamo trovato un problema con i file Vcard vcf.

Dato che abbiamo aggiornato il tuo plugin (9.1.1) e php (a 7.3 fpm), le vcard vengono generate in Utf8 con BOM.
Questo distrugge i file vCard. Una volta aperto il file e salvato in UTF8 senza BOM, tutto è ok.

Il nostro database è su utf8mb4 e wp-config utf8mb4.
Puoi aiutarci con questo?

Carri armati e tutto il meglio

Questo argomento è stato modificato 1 anno, 6 mesi fa da.

Autore del plugin

(@ shazahm1hotmailcom)

1 anno, 6 mesi fa

hmmm… strano… Penso che l’host web possa implementare la BOM perché Connections non aggiunge BOM alle vCard.

Faccio test e test PHP 7.3.7 quindi non penso che questo abbia nulla a che fare con la versione PHP. E una distinta materiali viene applicata all’inizio del contenuto del file. L’unico posto in cui viene aggiunta la distinta materiali nei collegamenti sono gli strumenti di esportazione CSV. L’ho aggiunto solo perché Excel può essere stupido e non può riconoscere correttamente un file con codifica UTF8 se BOM non è applicato.

Potete condividere un collegamento alla pagina della directory in modo che io possa scaricare una vCard dal vostro sito in modo da poterla esplorare?

Lanciatore di thread

(@frachtcontor)

1 anno, 6 mesi fa

Grazie per il tuo rapido aiuto! 🙂

Decisamente:
https://www.frachtcontor.com/en/contact/contact-directory/

fare clic su “Aggiungi alla rubrica”. per scaricare la vCard.

Ti auguro il meglio

Autore del plugin

(@ shazahm1hotmailcom)

1 anno, 6 mesi fa

Bene, BOM è sicuramente in fase di implementazione, non che non ti credessi, l’ho fatto.

Esaminando il codice, non viene implementato da Links.

Forse provare a controllare il conflitto dei plug-in chtú disattivando temporaneamente tutti gli altri plug-in per vedere se il problema persiste.

Lanciatore di thread

(@frachtcontor)

1 anno, 6 mesi fa

Hm, l’ho provato. Non sei fortunato.
Aggiornato di nuovo php – Sei fortunato.
php.inis è tutto corretto default_charset = "UTF-8"

C’è qualcosa di sbagliato in questo modello?
“Default Entry Card 3.0 di Steven A. Zahm”

Quale funzione generano la vCard e la connessione?

Lanciatore di thread

(@frachtcontor)

1 anno, 6 mesi fa

Un’altra cosa è che quando provo a disabilitarlo o abilitarlo sotto un’azione di immissione non succede nulla.
Il collegamento vCard è sempre visibile.

??

Autore del plugin

(@ shazahm1hotmailcom)

1 anno, 6 mesi fa

RE: C’è qualcosa che non va in questo modello?

Il modello non ha alcuna funzione e non ha nulla a che fare con la generazione e il download di una vCard.

RE: Un’altra cosa è che quando provo a disabilitarlo o abilitarlo sotto un’azione di immissione non succede nulla. Il collegamento vCard è sempre visibile.

Questo perché il modello è cambiato. Nel modello “stock” (come fornito) il collegamento vCard non è nel modello. Esiste come collegamento sopra la voce che appare solo quando si visualizza la pagina del profilo / dettagli della voce che sembra essere disabilitata o rimossa.

Ecco un collegamento diretto sul tuo sito alla pagina del profilo / dettagli della singola voce:

https://www.frachtcontor.com/en/contact/contact-directory/name/agnieszka-andrzejewska/

Qui vedrai il collegamento all’attività “Aggiungi alla rubrica”. Queste impostazioni controllano se il collegamento è visibile o meno.

RE: Quale funzione generano la vCard e la connessione?

Questa funzione genera e scarica la vCard n:

https://github.com/Connections-Business-Directory/Connections/blob/9.1.1/includes/entry/class.entry-vcard.php#L521-L584

Se Connections aggiungesse una BOM, avrebbe questo codice echo "xEFxBBxBF"; prima di echo $data; codice in funzione. Cosa che, come puoi vedere, no.

A questo punto, sospetto che l’host web stia prendendo in qualche modo la BOM. Potrebbe valere la pena contattare il loro team di supporto. Sfortunatamente probabilmente dovrai aggiungere alcuni livelli di supporto poiché dubito fortemente che i membri del team di supporto al livello più basso capiranno il problema. Almeno questa è solo la mia esperienza con il supporto tecnico su questioni più tecniche come queste.

Dopo una rapida ricerca sul web, ho trovato questo:

https://stackoverflow.com/questions/6328750/how-do-i-fix-this-php-download-script-which-is-corrupting-files

Sembra che PHP possa aggiungere automaticamente una BOM all’intestazione se il file PHP stesso viene salvato come UTF8 con una BOM. Ora i file Links sono UTF8 ma non hanno una BOM. Quando WP installa i collegamenti, durante il processo di disconnessione, PHP sul tuo server potrebbe aggiungere un BOM ai file. Consiglierei di aprire uno dei file del plugin per vedere se esiste la distinta materiali. Se è così, questo potrebbe essere il motivo del problema. In tal caso, dovresti comunque collaborare con il tuo host web per scoprire perché BOM viene applicato ai file quando WP li installa.

Spero che questo aiuti, fammi sapere cosa impari.

Lanciatore di thread

(@frachtcontor)

1 anno, 6 mesi fa

Grazie per il tuo lungo post.

Ho finito le idee.
Tutti i file con BOM sono facili da trovare: grep -rlI $'xEFxBBxBF' .

Ma non c’è niente in php….

Il sito web è OK. Funziona bene in altre parti del sito.
Fornisce tutto con UTF-8.
La classe vcard ha copiato un buco ma non dà nulla.
Il registro me lo mostra

GET /index.php?id=XX&type=XX&tx_wtdirectory_pi1[vCard]=XXX&cHash=XXXXXXXXXXXXXXXXXXXXXXXX

Non lo so 🙁

Autore del plugin

(@ shazahm1hotmailcom)

1 anno, 6 mesi fa

Mi spiace, non riesco a pensare a una ragione per cui la BOM viene implementata su vCard. Come puoi vedere, non viene implementato o aggiunto da Connections, quindi mi manca perché e come viene implementato.

Mi dispiace non riesco a capirlo per te!

Immagino che una cosa che potresti provare … nella classe vCard in Connections, prova a rimuovere BOM manualmente $data prima di echeggiare quando si utilizza questa funzione:

https://stackoverflow.com/a/15423899/5351316

Correre $data attraverso la forza e poi riecheggiarla.

Se ottieni ancora una distinta materiali nella vCard, è l’eco che viene aggiunto che significa che sta aggiungendo PHP per qualche motivo.

Se è così, prima di fare eco $data iniziare a utilizzare il buffer di output ob_start(), quindi echo e quindi usa ob_get_clean() ed eseguilo attraverso la funzione di rimozione della distinta base e poi echo di nuovo. È un po ‘un Rube Goldberg ma se PHP lo sta aggiungendo, questo * dovrebbe rimuoverlo.

Spero che questo aiuti, fammi sapere cosa impari.

Autore del plugin

(@ shazahm1hotmailcom)

1 anno, 6 mesi fa

@frachtcontor

Abbastanza strano se avessi l’opportunità di tenere traccia dell’hack / aggirare che ho suggerito nella mia ultima risposta?

Lanciatore di thread

(@frachtcontor)

1 anno, 3 mesi fa

Scusa per il ritardo della risposta. Non lo scopro. Disabilitato, ha ricostruito la pagina e testato localmente, quindi ha funzionato.

Questa risposta è stata modificata 1 anno, 3 mesi fa.

Was this helpful?

0 / 0

Lascia un commento 0

Your email address will not be published. Required fields are marked *