WebSite X5Help Center

 
Fabio B.
Fabio B.
User

Problema con cookies custom  it

Autor: Fabio B.
Besucht 1608, Followers 2, Geteilt 0  

http://manpower-monaco.webworks2017.pro/blog/index.php?id=54n1odmu

prima del tag head:

<?php
/*$Nome = $_POST["name"];
setcookie("Nome","$Nome");
$Email = $_POST["email"];
setcookie("Email","$Email");
$Url = $_POST["url"];
setcookie("Post","$Url");
$Titolo = $_POST["body"];
setcookie("Titolo","$Titolo");*/
?>

http://manpower-monaco.webworks2017.pro/cv.php

in un oggetto html:

<div id="test">
Ciao <?php echo $_COOKIE["Nome"]."</br>";echo $_COOKIE["Email"]."</br>";echo $_COOKIE["Post"]."</br>";echo $_COOKIE["Titolo"]."</br>";?>
</div>

perché non legge i cookies?

perché js mi crea i cookies mentre jQuery e php no?

Gepostet am
61 ANTWORTEN - 1 KORREKT
Giorgio C.
Giorgio C.
User

Se metti il codice php tra /* e */ non viene eseguito...

Mehr lesen
Gepostet am von Giorgio C.
Fabio B.
Fabio B.
User
Autor

Lo so, l' ho " commentato" per non farlo interferire con altre prove. Bisogna guardare i sorgenti per capire il resto

Mehr lesen
Gepostet am von Fabio B.
Giorgio C.
Giorgio C.
User

Scusa... ma prima del prima del tag head non vedo codice.

Mehr lesen
Gepostet am von Giorgio C.
Fabio B.
Fabio B.
User
Autor

Il php non puoi, per questo l'ho riportato io

Mehr lesen
Gepostet am von Fabio B.
Giorgio C.
Giorgio C.
User

Hai ragione scusa, e la pagina del form?

Mehr lesen
Gepostet am von Giorgio C.
Fabio B.
Fabio B.
User
Autor

quello per la prima raccolta dati é quello del blog topic; quello di destinazione dei dati che vanno recuperati dai cookie per la parziale autocompilazione é http://manpower-monaco.webworks2017.pro/cv.php

Mehr lesen
Gepostet am von Fabio B.
Giorgio C.
Giorgio C.
User

Prova a toglierele virgolette alle variabili

/*

$Nome = $_POST["name"];
setcookie("Nome",$Nome);
$Email = $_POST["email"];
setcookie("Email",$Email);
$Url = $_POST["url"];
setcookie("Post",$Url);
$Titolo = $_POST["body"];
setcookie("Titolo",$Titolo);

*/

Mehr lesen
Gepostet am von Giorgio C.
Fabio B.
Fabio B.
User
Autor

ok, ma ho già provato l'impostazione via php, non mi funge; adesso comunque riprovo visto che ho appena cambiato la versione del php da 5.3 a 5.5, ma credo sia inutile; ora disabilito la creazione dei cookie via js e abilito lo script php

Mehr lesen
Gepostet am von Fabio B.
Fabio B.
Fabio B.
User
Autor

e infatti non li crea; se li vedi ancora rimuovili, ricarica la pagina e invia il form compilato nella pagina del topic

Mehr lesen
Gepostet am von Fabio B.
Fabio B.
Fabio B.
User
Autor

ahhh... pardon, "le virgolette alle variabili"...

Mehr lesen
Gepostet am von Fabio B.
Fabio B.
Fabio B.
User
Autor

sì ora ne legge il contenuto di almeno uno ma solo nella pagina dello stesso topic (nemmeno in tutte le pagine create nella cartella blog, figuriamoci del dominio intero) e  solo per un attimo, prima che avvenga il cambio pagina;

lo puoi vedere nella header dove ho messo un oggetto codice con dentro

<?php
$Tester = $_COOKIE['Nome'];
echo "<p>Bonjour $Tester!</p>";
?>

Mehr lesen
Gepostet am von Fabio B.
Fabio B.
Fabio B.
User
Autor

ora tolgo le virgolette anche dalla variabile usata come chiave

Mehr lesen
Gepostet am von Fabio B.
Fabio B.
Fabio B.
User
Autor

niente da fare; cookie non ce ne sono; non so come mai prima per un attimo mi ha valorizzato quella variabile in header

Mehr lesen
Gepostet am von Fabio B.
Fabio B.
Fabio B.
User
Autor

in FF ho appena cambiato i permessi per il sito:

  • Archiviare dati non in linea l'ho portato da Chiedi sempre a Consenti
  • i cookie per default sono abilitati già

non cambia niente

Mehr lesen
Gepostet am von Fabio B.
Giorgio C.
Giorgio C.
User

Ok si vede in quella pagina, ma quando viene ricaricata i valori delle variabili si svuotano.

Devi di nuovo riempire la variabile e visualizzarla anche in quella pagina

Mehr lesen
Gepostet am von Giorgio C.
Fabio B.
Fabio B.
User
Autor

i cookie non vengono settati; questo é il problema; anche impostandoli con js non vengono però letti; questo é un altro problema

Mehr lesen
Gepostet am von Fabio B.
 stesil  
 stesil  
User

Forse il problema è un po' più complesso.

Per iniziare la pagina che scrive i cookies è in una cartella (blog) e la pagina che li riceve in una cartella diversa. Quindi il cookie andrebbe settato in modo da essere abilitato nell'intero dominio "/" (con 0 viene impostato un cookie di sessione):

setcookie("Nome", $Nome, 0, "/");

Poi i cookies da impostare sono multipli, e quindi andrebbero inseriti in un array e letti con un ciclo foreach. Qui trovi tutte le informazioni sulla sintassi da usare: http://php.net/manual/en/function.setcookie.php

Ti allego esempio di base fuori da WebSite.

Ma poiché il form da cui si ricavano le variabili passate in POST è quello dei commenti di un articolo del blog, tutto questo non basta: io ho fatto un esempio con commenti inviati ad un file senza approvazione e, al submit, la pagina viene ricaricata due volte consecutive, e si perdono i valori delle variabili passate in POST.

Il redirect è presente nella funzione checkNewMessages() del file x5engine.php (riga 7593 della Professional 13.0.5.27, riga 5254 della Evolution 13.0.5.27): se editi il sorgente della index del blog ed inserisci var_dump($_POST); come prima riga vedrai per un nanosecondo l'array completo di tutti i valori passati in POST, poi sparisce e viene sostituito con un array vuoto. Se, giusto per fare la prova del nove, che non è proprio il caso di toccare l'engine php visto quante funzioni delicate contiene, commenti la riga 7593 del file x5engine.php vedrai invece tutto valorizzato in modo corretto. Non so se, scegliendo altre impostazioni per i commenti, il comportamento cambia.

Spero di sbagliarmi, ma io non vedo soluzioni percorribili.

Mehr lesen
Gepostet am von  stesil  
 stesil  
 stesil  
User

Senti Fabio, io non so che dire. Abbiamo riprovato ancora, (e ieri sera di prove ne abbiamo fatte tante) e ora sembra funzionare anche su WebSite senza editare il file x5engine.php, ma serve l'if isset prima di memorizzare la variabile in POST, come nell'esempio allegato prima.

Io vado a farmi un altro caffé che è meglio, magari metto una prova per testarlo online, visto che finora lo abbiamo provato su XAMPP.

Tu prova e verifica in quale di questi due post ho scritto cavolate (magari in tutti e due)  :)

Mehr lesen
Gepostet am von  stesil  
Fabio B.
Fabio B.
User
Autor

ciao stesil, sì ti confermo che funziona; la chiave del problema per la creazione dei cookies era proprio quel redirect nell'engine che rinfrescava i valori nei campi svuotandoli;

lavorando a partire dal tuo esempio io ho scritto quanto segue e puoi vedere girare online:

http://manpower-monaco.webworks2017.pro/blog/index.php

prima di head

<?php
setcookie("cookie[Nome]", $_POST["name"], 0, "/");
setcookie("cookie[Email]", $_POST["email"], 0, "/");
setcookie("cookie[Post]", $_POST["url"], 0, "/");
setcookie("cookie[Titolo]", $_POST["body"], 0, "/");
setcookie("cookie[Codice]", $_POST["codice"], 0, "/");
?>

http://manpower-monaco.webworks2017.pro/cv.php

dentro ad un oggetto html che precede il form:

<div>
    Ciao
    <?php
        $COOKIE = array('Nome', 'Email', 'Post', 'Titolo', 'Codice');
        if (isset($_COOKIE['cookie'])) {
            foreach ($COOKIE as $valore){
                $COOKIE[$valore] = $_COOKIE['cookie'][$valore];
            };
        print_r ($_COOKIE);
        echo "</br>";
        print_r ($COOKIE);
        echo "</br>";
        };    
        
        $Nome = $COOKIE[Nome];
        $Email = $COOKIE[Email];
        $Post = $COOKIE[Post];
        $Titolo = $COOKIE[Titolo];
        $Codice = strtoupper(substr($COOKIE[Post],58,8));
        
        echo $Nome."</br>";
        echo $Email."</br>";
        echo $Post."</br>";
        echo $Titolo."</br>";
        echo $Codice."</br>";
        
        echo '<input type="hidden" name="nome" value="'.$Nome.'">';
        echo '<input type="hidden" name="email" value="'.$Email.'">';
        echo '<input type="hidden" name="post" value="'.$Post.'">';
        echo '<input type="hidden" name="titolo" value="'.$Titolo.'">';
        echo '<input type="hidden" name="codice" value="'.$Codice.'">';
        
        ?>
    <script>
        $(window).ready(function(){
            var Codice = $('input[type="hidden"][name="codice"]').val();
            var Nome = $('input[type="hidden"][name="nome"]').val();
            var Email = $('input[type="hidden"][name="email"]').val();
            var Post = $('input[type="hidden"][name="post"]').val();
            var Titolo = $('input[type="hidden"][name="titolo"]').val();
            $('form input[name="ref"]').val(Codice).attr('readonly','readonly');
            $('form input[name="nom"]').val(Nome);
            $('form input[name="email"]').val(Email);
            $('form input[name="url"]').val(Post).attr('readonly','readonly');
            $('form input[name="titre"]').val(Titolo).attr('readonly','readonly');
        }));
    </script>
</div>

purtroppo, come puoi vedere dal sorgente della prima pagina, non sono riuscito a trasferire il valore di Codice da js a php né via jQuery:

var formId = "x5_pc" + Codice + "-topic-form";
$('div.topic-form-row:nth-of-type(4)').prepend('<input type="hidden" form="' + formId + '" name="codice" value="' + Codice + '">');

né via php inserendo in fondo al body:

<?php
//echo '<script>$(document).ready(function(){Codice = (window.location.href).slice(58,66).toUpperCase();var formId = "x5_pc" + Codice + "-topic-form";$(\'div.topic-form-row:nth-of-type(4)\').prepend(\'<input type="hidden" form="\' + formId + \'" name="codice" value="\' + Codice + \'">\');};</script>';
?>

quindi l'ho prelevato direttamente da una delle variabili nella pagina di destinazione;

Ora il problema che si pone é nuovamente il trasferimento dei valori ma in senso contrario; ho usato lo stesso sistema degli input nascosti ma non va nemmeno se piazzo un setTimeout di 3 sec.

Insomma nel form i campi non vengono autocompilati; ho disabiltato anche la paginazione del form per ridurre le dinamiche incognite, ma niente!

In effetti questo dovrebbe essere l'ultimo scoglio, ma il mio intento di entrare nella logica di funzionamento dei cookie non é ancora risolto perché ho diverse perplessità sulle quali non ho trovato ragguagli in internet:

  • capisco dal tuo esempio che abbiamo creato una serie di cookie usando come nome una stringa che comprende il nome dell'unico cookie risultante + la chiave che gli fa da indice; ma perché la stessa stringa viene interpretata come singolo nome all'atto della creazione mentre viene sbrogliata come chiave nella lettura? Ovvero: perché se io creo un cookie che si chiama cookie[Nome] poi per leggerlo devo chiamarlo con un nome differente (cookie)? Che ne sa il programma che il resto della stringa va interpretato come una voce di array invece di essere parte integrante del nome del cookie come alla partenza?
  • per quale motivo non ottengo il risultato desiderato se tolgo il preventivo controllo isset sulla variabile? a cosa serve verificarne l'esistenza? non basta che se la variabile non esiste ne resta automaticamente abortito l'uso nel programma non producendo effetto?
  • perché non posso impostare 10 cookie indipendenti e leggerli immediatamente separati chiamandoli col nome originario?

Per me questo sito ha un valore puramente autodidattico perché non mi é stato richiesto e perché non é proponibile ad una agenzia che necessita di un cms per inserire gli annunci in autonomia senza complicarsi l'attività con la necessità di apprendere il web design e l'uso del programma.

Perciò quando mi riterrò soddisfatto a proposito dell'uso dei cookie vi romperò ancora le scatole con la versione che deve farmi la stesso lavoro usando le sessioni php:

http://manpower-monaco.webworks2017.pro/session/index.php

e con quella che mi piace più di tutte, la versione con le sessionStorage:

http://manpower-monaco.webworks2017.pro/sessionstorage/index.php

By the way: chi sa dirmi se un sito che non usa cookie di alcun tipo (nemmeno tecnici) ma solo sessionStorage é comunque soggetto agli obblighi formali imposti dalla legge sui cookies (informativa estesa, banner, link in evidenza all'informativa)?

PS: grazie per gli sforzi che fate insieme a me!wink

Mehr lesen
Gepostet am von Fabio B.
Fabio B.
Fabio B.
User
Autor

ppss: non mi faccio scrupoli a metter mano al file engine se necessario, perché:

  1. l'ho già modificato alla riga 4769 per togliere la rielaborazione del nome per i files allegati in modo da poter sovrascrivere i files con lo stesso nome senza oberare di spazzatura antiquata la rispettiva cartella
  2. non intervengo direttamente nel file che si trova nella directori del programma, bensì lo copio o esporto il sito in locale in Desktop, lo modifico con Eclipse, lo salvo e poi lo allego al progetto destinandolo alla cartella res per sovrascrivere l'originale; così non devo posteditare ogni volta

smile

Mehr lesen
Gepostet am von Fabio B.
 stesil  
 stesil  
User

Il campo generato con javascript passa tranquillamente, però devi scrivere in modo corretto il valore dell'attributo form dell'input che generi dinamicamente: ora ne hai trasformato una parte in maiuscolo, con  .toUpperCase(); ma l'id del form è tutto in minuscolo. E' per questo che non ti passa il valore del campo. Puoi anche provare a togliere questo attributo, funziona lo stesso.

Fabio Bevilacqua
    capisco dal tuo esempio che abbiamo creato una serie di cookie usando come nome una stringa che comprende il nome dell'unico cookie risultante + la chiave che gli fa da indice; ma perché la stessa stringa viene interpretata come singolo nome all'atto della creazione mentre viene sbrogliata come chiave nella lettura? Ovvero: perché se io creo un cookie che si chiama cookie[Nome] poi per leggerlo devo chiamarlo con un nome differente (cookie)? Che ne sa il programma che il resto della stringa va interpretato come una voce di array invece di essere parte integrante del nome del cookie come alla partenza?


Ho capito poco di quello che stai chiedendo. Comunque no, non si crea una stringa, ma un array. Le parentesi quadre indicano proprio che stai creando un elemento di un array. Di fatto invii all'array superglobale S_COOKIE un array di elementi dove la chiave è il nome del cookie e il valore è il valore del cookie. Quando lo leggi, devi dipanare la matassa, quindi cicli l'array che hai impostato e ti ritornano chiave e valore dei singoli cookies.

Fabio Bevilacqua


    per quale motivo non ottengo il risultato desiderato se tolgo il preventivo controllo isset sulla variabile? a cosa serve verificarne l'esistenza? non basta che se la variabile non esiste ne resta automaticamente abortito l'uso nel programma non producendo effetto?



Proprio per annullare gli effetti del redirect. Se non controlli l'esistenza della variabile la funzione setcookie agisce due volte: quando si carica la pagina la prima volta imposta il cookie; al redirect, non esistendo la variabile, si ricrea lo stesso cookie con un valore nullo, operazione che cancella il cookie stesso.

Fabio Bevilacqua


    perché non posso impostare 10 cookie indipendenti e leggerli immediatamente separati chiamandoli col nome originario?



Sì, se preferisci puoi farlo.

Mehr lesen
Gepostet am von  stesil  
Fabio B.
Fabio B.
User
Autor

ciao stesil, scusa il ritardo ma ho dovuto sbrogliare un problema col sito che mi impediva di continuare questo esperimento: https://helpcenter.websitex5.com/de/post/168594#4

grazie per i suggerimenti ed i chiarimenti; sono riuscito a far funzionare il tutto, ma il programma non digerisce bene la sostituzione dell'engine e tra le altre cosucce ignora i tag style inseriti nella sez. esperto.

A quanto pare allo stato attuale, non potendo sostituire engine.php, il programma sembra non permettere la creazione di cookie personalizzati via php, il che é una falla considerevole per sfruttare tutte le potenzialità di questo fantastico programma senza dover ricorrere a assurde complicazioni di codice via js sia per la creazione dei cookie che per la lettura/sbroglio/parse/decodifica URI...rinunciando alla comodità della variabile $_COOKIE solo per giocare d'anticipo sul redirect.

Comunque per tutto il resto l'esperimento é andato in porto, anche senza ciclare con foreach; l'ultimo test l'ho fatto con cookies separati e richiamati individualmente.

In verità ho un'altra ideuzza in testa che con un escamotage potrebbe permettere comunque il raggiungimento dello scopo anche senza toccare engine.php, ma siccome il procedimento é lunghino ci proverò dopo aver testato la via dei cookie via jQuery altrettanto comoda che quella in php.

Adesso riporto il progetto ad uno stato precedente alla prima sostituzione di engine perché il programma non permette di risostituirlo con l'originale o altre copie.

Mehr lesen
Gepostet am von Fabio B.
Fabio B.
Fabio B.
User
Autor

anzi, ho un'altra idea, i cookie con jQuery li provo dopo; adesso voglio impostare l'array $_COOKIE via js e recuperarlo con php

Mehr lesen
Gepostet am von Fabio B.
 stesil  
 stesil  
User
Fabio Bevilacqua
A quanto pare allo stato attuale, non potendo sostituire engine.php, il programma sembra non permettere la creazione di cookie personalizzati via php

Guarda che ti sbagli. Il sito che ti ho postato è stato fatto SENZA alcuna modifica al file x5engine.php. Mi sembrava di averlo scritto chiaramente:

 stesil  
Sembra funzionare, quindi la soluzione c'è e il post-edit non è necessario. Qui la prova online, con il codice utilizzato: http://quellidelcucuzzolo.altervista.org/appunti/ws-cookie-array/

Comunque, buon lavoro!

Mehr lesen
Gepostet am von  stesil  
Giorgio C.
Giorgio C.
User
Fabio Bevilacqua
prima di head setcookie("cookie[Nome]", $_POST["name"], 0, "/"); setcookie("cookie[Email]", $_POST["email"], 0, "/"); setcookie("cookie[Post]", $_POST["url"], 0, "/");

Molto interessante Ma una domanda: io sapevo che La funzione setcookie () deve apparire prima del tag <html>

o va bene anche dopo?

Mehr lesen
Gepostet am von Giorgio C.
Fabio B.
Fabio B.
User
Autor

@ Giorgio: no rigorosamente prima

@ Stesil: scusa mi sono espresso con leggerezza; volevo dire il blog del programma usandone il form come sto facendo io wink

 stesil  
Comunque, buon lavoro!

grazie, peccato non sia un giudizio ma solo un augurio smile, però ce la farò laughing

nel frattempo il tentativo ibrido dell'array non ha avuto successo!

Mehr lesen
Gepostet am von Fabio B.
Giorgio C.
Giorgio C.
User

Prima del tag <html> non head

Mehr lesen
Gepostet am von Giorgio C.
Fabio B.
Fabio B.
User
Autor

sì, pardon!

Mehr lesen
Gepostet am von Fabio B.
Fabio B.
Fabio B.
User
Autor

SUCCESS!!! cool

Sono riuscito a portare i valori dal form del blog alla pagina col form usando i cookie php senza toccare l'engine; però c'é qualcosina che  non va nella autocompilazione; mi compila solamente il campo del nome

Mehr lesen
Gepostet am von Fabio B.
Fabio B.
Fabio B.
User
Autor

AAAARGHHHH!!!! yell

cosa c'é che non va qui? http://manpower-monaco.webworks2017.pro/cv.php

<style>
/*    label:not(:first-of-type) {
        display: none !important;
    };*/
    label {
        display: none !important;
    };
    label[id="imObjectForm_2_1_label"] {
        display: inline-block !important;
    };
</style>

Mehr lesen
Gepostet am von Fabio B.
Fabio B.
Fabio B.
User
Autor

Per chi se lo chiedesse, per risolvere il problema della della persistenza dei cookie creati in php raggirando il redirect ho fatto così:

invece del normale

<?php
setcookie("Nome", $_POST["name"], 0, "/");
setcookie("Email", $_POST["email"], 0, "/");
setcookie("Url", $_POST["url"], 0, "/");
setcookie("Titolo", $_POST["body"], 0, "/");
setcookie("Codice", $_POST["codice"], 0, "/");
?>

ho scritto

<?php
setcookie("Nome", $_COOKIE["Nome"], 0, "/");
setcookie("Email", $_COOKIE["Email"], 0, "/");
setcookie("Url", $_COOKIE["Url"], 0, "/");
setcookie("Titolo", $_COOKIE["Titolo"], 0, "/");
setcookie("Codice", $_COOKIE["Codice"], 0, "/");

if (!isset($_COOKIE['Nome'])) {
setcookie("Nome", $_POST["name"], 0, "/");
};
if (!isset($_COOKIE['Email'])) {
setcookie("Email", $_POST["email"], 0, "/");
};
if (!isset($_COOKIE['Url'])) {
setcookie("Url", $_POST["url"], 0, "/");
};
if (!isset($_COOKIE['Titolo'])) {
setcookie("Titolo", $_POST["body"], 0, "/");
};
if (!isset($_COOKIE['Codice'])) {
setcookie("Codice", $_POST["codice"], 0, "/");
};
?>

praticamente dico al server di settare il cookie MioCookie con il valore di MioCookie presente nella variabile $_COOKIE;

dopo gli dico di verificare se questa variabile esiste, cioé se contiene un valore, altrimenti e solo altrimenti lo imposta prelevandolo dal campo scelto;

una volta che la pagina viene ricaricata dal redirect, anche se i campi del form sono vuoti, il cookie non viene sovrascritto e quindi cancellato

Mehr lesen
Gepostet am von Fabio B.
Fabio B.
Fabio B.
User
Autor

nell'attesa che qualcuno risponda al mio quesito di css, inizio la prova con jQuery...

Mehr lesen
Gepostet am von Fabio B.
Giorgio C.
Giorgio C.
User

Io non sono riuscito a scaricare il plugin Cookie che è indispensabile al progetto.

Mehr lesen
Gepostet am von Giorgio C.
 stesil  
 stesil  
User

Secondo me hai fatto indigestione di javascript! smile

Partiamo dall'ultima domanda: l'errore visibile a colpo d'occhio (poi magari ce ne sono anche altri) è nel richiamo del file js.cookie.js... più che richiamare il file ne hai inserito l'URL in una variabile che hai chiamato src

e per forza che poi $.cookie non funziona!

L'errore nei CSS, invece, sono i punti e virgola alla fine di ogni regola, dopo la chiusura della parentesi graffa: stai scrivendo un codice CSS, non un codice javascript, e i punti e virgola invalidano tutte le regole successive.

Un'ultima considerazione: hai scelto, a differenza dello script che ho provato con lemon, di verificare l'esistenza del cookie invece che l'esistenza dei dati passati in POST. Ma in questo modo se un utente compila un commento di un articolo del blog e poi, senza chiudere il browser, ne vuole inviare un altro, in un articolo diverso, vengono inviati al form sempre i dati del primo, perché i cookies di sessione esistono ancora e non vengono sovrascritti.

Mehr lesen
Gepostet am von  stesil  
Fabio B.
Fabio B.
User
Autor
 stesil  
Secondo me hai fatto indigestione di javascript!

laughingsecondo me pure; a furia di saltare da un testo all'altro nella testa ho un frullato di protocolli tongue-out

 stesil  

L'errore nei CSS, invece, sono i punti e virgola alla fine di ogni regola, dopo la chiusura della parentesi graffa: stai scrivendo un codice CSS, non un codice javascript, e i punti e virgola invalidano tutte le regole successive.

hai ragione; e sì che ne ho scritto di css...comunque per riuscire a correggere il css ho dovuto riesumare e aggiornare con un rapido copia/incolla il progetto da una versione "antica", sempre per causa dell'engine.

 stesil  

Un'ultima considerazione: hai scelto, a differenza dello script che ho provato con lemon, di verificare l'esistenza del cookie invece che l'esistenza dei dati passati in POST. Ma in questo modo se un utente compila un commento di un articolo del blog e poi, senza chiudere il browser, ne vuole inviare un altro, in un articolo diverso, vengono inviati al form sempre i dati del primo, perché i cookies di sessione esistono ancora e non vengono sovrascritti.

vero, io avevo velocemente liquidato la questione dicendomi che tanto l'utente al pc é normalmente lo stesso per tutta la sessione (anche se non é detto affatto), tralasciando che ci sono pure i coockie legati all'articolo; adesso ho sistemato il problema cancellando i cookie via js quando non servono più direttamente nella pagina cv.php; l'ho fatto in js perché altrimenti per farlo in php avrei dovuto scegliere una pagina di rimando diversa da quella del blog.

Grazie per la segnalazione.

 stesil  

Partiamo dall'ultima domanda: l'errore visibile a colpo d'occhio (poi magari ce ne sono anche altri) è nel richiamo del file js.cookie.js... più che richiamare il file ne hai inserito l'URL in una variabile che hai chiamato src

e per forza che poi $.cookie non funziona!

in effetti mi pareva, ma ho seguito pedissequamente l'indicazione per l'installazione che ho trovato qui: https://github.com/js-cookie/js-cookie/tree/v1.5.1

sicuramente avrò frainteso.

ora ho messo:

<link type"text/javascript" href="https://cdnjs.cloudflare.com/ajax/libs/js-cookie/latest/js.cookie.js";>
<script>
$(document).ready(function(){
$.cookie() === Cookies.get();
});
</script>

ma ci sono sicuramente degli errori ancora, perché non funziona né l'impostazione fatta da $.cookie() né quella da Cookie.set() e se decommento la parte di codice commentata nel blog non mi funziona più l'intero script.

Mehr lesen
Gepostet am von Fabio B.
Fabio B.
Fabio B.
User
Autor

mo' vado un po' a dormire che non capisco più niente embarassed

Mehr lesen
Gepostet am von Fabio B.
Fabio B.
Fabio B.
User
Autor

ps: il segno = che manca qua sopra l'ho appena corretto

Mehr lesen
Gepostet am von Fabio B.
Fabio B.
Fabio B.
User
Autor
Fabio Bevilacqua
in effetti mi pareva, ma ho seguito pedissequamente l'indicazione per l'installazione che ho trovato qui: https://github.com/js-cookie/js-cookie/tree/v1.5.1 sicuramente avrò frainteso.

mannaggia alla stanchezza...ma certo che hanno scritto così, parlavano dell'installazione del file da scaricare;  non di collegare un cdn undecided

ho riacceso il pc per fare un esperimento riuscito: cancellare i cookie senza js e senza cambiare la pagina di ritorno;

però dopo aver rifatto l'esportazione del sito online (senza usare l'anteprima) nella pagina cv.php rivedevo le etichette e nel sorgente il css non era quello scelto nell'ultimo aggiornamento esportato;

dopo aver chiamato una anteprima (corretta) ho riesportato ancora e il css online era quello giusto; mi sa che questa versione del programma é un pochino difettosa.

Mehr lesen
Gepostet am von Fabio B.
Fabio B.
Fabio B.
User
Autor

mò vado a nanna veramente sealed

Mehr lesen
Gepostet am von Fabio B.
 lemonsong  
 lemonsong  
User
Fabio Bevilacqua
<link type"text/javascript" href="https://cdnjs.cloudflare.com/ajax/libs/js-cookie/latest/js.cookie.js";>

Capisco che la stanchezza può fare brutti scherzi ma oltre ai punto e virgola che ti perseguitano ancora, non capisco perché non richiami lo script con il classico tag:

<script src="percorso/js.cookie.js"></script>
Mehr lesen
Gepostet am von  lemonsong  
Fabio B.
Fabio B.
User
Autor

ciao lemon, sì, adesso lo scarico e lo allego al progetto direttamente; comunque prima sto litigando col programma perché non mi inserisce gli stili che gli do;

http://manpower-monaco.webworks2017.pro/cv.php

ho appena rimesso tutte e tre le regole in modo che siano ridondanti, chiamato l'anteprima e riesportato tutti i files del sito:

<style>
label:not(:first-of-type) {
display: none !important
}
label {
display: none !important
}
label[id="imObjectForm_2_1_label"] {
display: inline-block !important
}
</style>

ugualmente quando rinfresco la pagina nel browser, come pure in anteprima, gli stili non vengono applicati;

se poi guardo il sorgente online mi compare solo la prima regola (di per sé sufficiente), ma non viene eseguita

Mehr lesen
Gepostet am von Fabio B.
Fabio B.
Fabio B.
User
Autor

nel frattempo mi accorgo che anche il link e lo script che avevo messo al passo 1 non sono più nel progetto

Mehr lesen
Gepostet am von Fabio B.
Fabio B.
Fabio B.
User
Autor

adesso ho rimesso

<style>
/*    label:not(:first-of-type) {
        display: none !important
    }*/
    label {
        display: none !important
    }
    label[id="imObjectForm_2_1_label"] {
        display: inline-block !important
    }
</style>

riesportato e rinfrescato, eppure appare

<style> label:not(:first-of-type) { display: none !important } /* label { display: none !important } label[id="imObjectForm_2_1_label"] { display: inline-block !important }*/ </style>

e non viene eseguito! surprised

qui c'é un bel BUG!

Mehr lesen
Gepostet am von Fabio B.
Fabio B.
Fabio B.
User
Autor
Fabio Bevilacqua
nel frattempo mi accorgo che anche il link e lo script che avevo messo al passo 1 non sono più nel progetto

errore: quelli li avevo messo nell'altro progetto in jquery, pardon sealed

Mehr lesen
Gepostet am von Fabio B.
Fabio B.
Fabio B.
User
Autor

con i test su sessioni php e sessionStorage js non vi scoccerò perché sono riuscito senza problemi, ma continua a non fungere il css della prima regola così come anche gli script js/jQuery dove uso :not(:first-of-type) (http://manpower-monaco.webworks2017.pro/cv.php);

ho già tentato anche l'esportazione in locale e poi online tramite Filezilla; il programma é scagionato;

se qualcuno vuol testare e dirmi se si tratta di un problema dei vari browser o della mia sintassi o cosa...grazie mille!

Mehr lesen
Gepostet am von Fabio B.
Fabio B.
Fabio B.
User
Autor

niente da fare;

ora ho messo

<style>
    label:not(:nth-of-type(1)) {
        display: none !important
    }
/*    label:not(:first-of-type) {
        display: none !important
    }
    label {
        display: none !important
    }
    label[id="imObjectForm_2_1_label"] {
        display: inline-block !important
    }*/
</style>

ma come al solito non viene nemmeno esportato

Mehr lesen
Gepostet am von Fabio B.
 lemonsong  
 lemonsong  
User
Fabio Bevilacqua
[...] continua a non fungere il css della prima regola così come anche gli script js/jQuery dove uso :not(:first-of-type) (http://manpower-monaco.webworks2017.pro/cv.php);

Con la struttura che genera WS, il CSS che hai scritto, non può funzionare: gli elementi label devono avere lo stesso genitore, quindi essere fratelli, come in questo esempio: https://jsfiddle.net/0rqdfvjc/

Mehr lesen
Gepostet am von  lemonsong  
Fabio B.
Fabio B.
User
Autor

ok, ma perché? io così seleziono tutte gli elementi presenti nella pagina (genitore comune) e poi ne escludo uno dall'insieme; dove sta scritto che devono essere fratelli?

Mehr lesen
Gepostet am von Fabio B.
Fabio B.
Fabio B.
User
Autor

...e perché non va nemmeno

$('form input:not(:first-of-type)').attr('type','hidden');

???

Mehr lesen
Gepostet am von Fabio B.
 lemonsong  
 lemonsong  
User
Fabio Bevilacqua
...e perché non va nemmeno $('form input:not(:first-of-type)').attr('type','hidden'); ???

Per lo stesso motivo degli elementi label che WS genera.

Se vuoi cambiare l'attributo type di tutti gli input di un form tranne il primo, puoi usare questo:

$('form input:not(:first)').attr('type','hidden');

Qui ne trovi altri: http://stackoverflow.com/questions/2259393/jquery-select-all-except-first

.

Mehr lesen
Gepostet am von  lemonsong  
Fabio B.
Fabio B.
User
Autor

grazie lemon, interessanti alternative;

però jQuery é una libreria proprietaria e come tale può fare qualche deviazione dagli standard soggettivamente con ogni diritto;

invece non mi spiego perché un codice css sintatticamente ortodosso e irreprensibile non debba applicarsi secondo le previsioni ad una pagina creata dal programma; sarebbe a dire che la struttura di questa pagina non é compatibile con il css stabilito dal W3C? questo é assurdo ed impossibile;

ps: ho provato sia la formula del tuo suggerimento sia la seguente:

$('form input').not(':first').attr('type','hidden');

in entrambi i casi i campi spariscono tutti, anche il primo;

mi fai capire che cos'hanno di particolare questi elementi label generati dal programma tranne il fatto di non essere fratelli diretti? se io uso la formula

label {
        display: none !important
    }
label[id="imObjectForm_2_1_label"] {
        display: inline-block !important
}

con una singola regola seleziono tutti gli elementi anche se non sono figli direttamente dello stesso padre, perché un selettore più complesso ma comunque corretto non deve funzionare se é conforme allo standard (ho già testato il risultato anche su Edge e Chrome con identico esito).

Mehr lesen
Gepostet am von Fabio B.
Fabio B.
Fabio B.
User
Autor

?

Mehr lesen
Gepostet am von Fabio B.
 lemonsong  
 lemonsong  
User
Fabio Bevilacqua
sarebbe a dire che la struttura di questa pagina non é compatibile con il css stabilito dal W3C? questo é assurdo ed impossibile;

Infatti è assurdo e non capisco da dove l'hai dedotto.

Ho semplicemente detto che, nel codice generato da WS, l'elemento label non ha altri fratelli label.

Se osservi il codice generato ti accorgi che ogni label ha un suo div come genitore, ed è per questo motivo che non può funzionare :first-of-type (spero sia chiaro adesso).

Se vuoi un CSS che nasconde tutti gli elementi label tranne il primo (in WS) puoi usare uno di questi:

form div:not(:first-of-type) label {
  display: none !important;
}

form div:not(:first-child) label {
  display: none !important;
}

form div:not(:nth-child(1)) label {
  display: none !important;
}

Fabio Bevilacqua

ps: ho provato sia la formula del tuo suggerimento sia la seguente:

$('form input').not(':first').attr('type','hidden');

in entrambi i casi i campi spariscono tutti, anche il primo;

Ovviamente era un esempio "teorico", anche perché si nasconderebbero pure i pulsanti "Invia" ed eventuale "Reset".

Lo puoi adattare al modulo mail di WS in questo modo:

$('form div[id$="_container"] input').not(':first').attr('type','hidden');

Mi sfugge cosa vuoi fare ma se il tuo intento è lasciare visibile solo il primo campo (label compresa) di un modulo mail di WS, potresti usare questo CSS:

form div[id$="_container"]:not(:nth-child(1)) {
    display: none !important;
}

Tutti i codici sono riferiti al modulo mail presente in questa pagina: manpower-monaco.webworks2017.pro/cv.php

Mehr lesen
Gepostet am von  lemonsong  
Fabio B.
Fabio B.
User
Autor

grazie lemon per spenderti ancora;

ho appena trovato la conferma ai miei dubbi su quanto mi hai lasciato intendere (che quella specifica pseudoclasse sia abile solo nel contesto di un insieme di elementi direttamente figli di un medesimo elemento padre) qui:

https://www.w3.org/wiki/CSS/Selectors/pseudo-classes/:first-of-type

non ero in cerca di soluzioni pratiche che si sprecano ed avevo già trovato, ma di ragioni teoriche che stanno alla fonte;

grazie mille wink

qui chiudo l'OT sui css;

appena trovo il tempo e la voglia riapprofondisco il tema dei cookie via jQuery...

ps: solo per dovere di chiarezza verso chi legge, quando ho detto

Fabio Bevilacqua
però jQuery é una libreria proprietaria e come tale può fare qualche deviazione dagli standard soggettivamente con ogni diritto;

non intendevo che necessariamente l'abbia fatta; in effetti chi conosce jQuery sa che una delle peculiarità più apprezzabili é il fatto di conservare la piena compatibilità formale con tutti i selettori css standard;

intendevo invece che la libreria js nel suo specifico aggiunge metodi sostitutivi  a certe formule inerti css, nella fattispecie oltre ad usare la comune formula :not (chiamiamolo pure pseudofiltro, tanto per inventarci un neologismo), usa pure il metodo proprio .not, che non conoscevo prima

Mehr lesen
Gepostet am von Fabio B.
 lemonsong  
 lemonsong  
User
Fabio Bevilacqua
grazie lemon per spenderti ancora; ho appena trovato la conferma ai miei dubbi su quanto mi hai lasciato intendere (che quella specifica pseudoclasse sia abile solo nel contesto di un insieme di elementi direttamente figli di un medesimo elemento padre) qui: https://www.w3.org/wiki/CSS/Selectors/pseudo-classes/:first-of-type [...]

Prego.

Perché, di me non ti fidavi?

E' una battuta eh? smile

Mehr lesen
Gepostet am von  lemonsong  
Fabio B.
Fabio B.
User
Autor

per esperienza sì, ma mi servivano certezze formali da parte di una autorità costituita in merito;

io non indago solo i come, ma anche i perché degli effetti ed i perché dei come;

in realtà il mio hobby sta trasformandosi sempre più dal webdesign alla programmazione applicata nello specifico di WSX5;

inoltre il mio incrollabile punto di partenza é sempre la certezza che TUTTI  siamo fallibili, ma che il fallimento dura solo quanto lo facciamo durare, perché chi insiste a cercare prima o poi trova!wink

Mehr lesen
Gepostet am von Fabio B.
Fabio B.
Fabio B.
User
Autor
Fabio Bevilacqua
<?php if (!isset($_COOKIE['Nome'])) { setcookie("Nome", $_POST["name"], 0, "/"); }; if (!isset($_COOKIE['Email'])) { setcookie("Email", $_POST["email"], 0, "/"); }; if (!isset($_COOKIE['Url'])) { setcookie("Url", $_POST["url"], 0, "/"); }; if (!isset($_COOKIE['Titolo'])) { setcookie("Titolo", $_POST["body"], 0, "/"); }; if (!isset($_COOKIE['Codice'])) { setcookie("Coidice", $_POST["codice"], 0, "/"); }; ?>

a proposito di fallibilità, mi correggo: é sufficiente il codice qui sopra per portare i dati dal form del blog via cookie php senza manomettere engine.php, poi é opportuno specificare opportunamente e soggettivamente i percorsi e gli altri parametri

Mehr lesen
Gepostet am von Fabio B.