Newsgroup: it.comp.www.php
Titolo: problema di difficile soluzione

Ciao a tutti,
             come da oggetto ho un "caso" abbastanza strano...tempo fa mi
avete giŕ dato preziosi suggermienti a riguardo che perň, pur avendo
migliorato la cosa, non l'hanno risolta..
Parliamo di un sito di notevole importanza cui si registrano non nemo di
1000 persone al mese...
Il nocciolo della questione č appunto il form di registrazione.
La questione ruota attorno a TRE semplicissime pagine php.
1) prima.php    pagina di immisione dei dati con semplici campi input
(nome, cognome, via etc)
2) seconda.php  pagina di riepilogo con tasto conferma, una FORM con la
action "puntata" alla pagina di immissione (vedi successiva) e con cambi
hidden dei valori raccolti da prima.php
3) terza.php    pagina di inserimento nel db. Ci tengo a precisare che  i
dati vengono semplicemente immessi nel db "CRUCIALE" direttamente dal
$_POST[]. 
problema---->ogni mese almeno 5/10 inserimenti ogni 1000 vanno a vuoto, nel
senso che nel DB non ci ritroviamo i dati del cliente, i dati del POST vengono
completamente persi. 
Tempo fa i dati venivano immessi nel DB leggendo una variabile di sessione
che perň ora, come detto, abbiamo sostituito con la variabile POST che ci
offre quanto meno una affidabilitŕ maggiore (con quella di sessione i
mancati inserimenti erano tre volte di +). 
Che facciamo? possibile che i dati di un POST vengano persi cosě di
frequente?
Ammetto che pagina terza.php fa diversi altri aggiornamenti, tutti poco
importanti se non quelli effettuati sul DB cruciale...ma non la definirei
una pagina particolarmente pesante...
avete qualche idea del perchč di questa anomalia?
Come possiamo tagliare la testa al toro e trovare una soluzione definitiva?
grazie.
Marco
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 completamente persi.
Ma a che fase vengono persi?
I dati arrivano nella pagina di conferma?
Se sě, quando li "porti" nella pagina di inserimento la mysql_query 
restituisce true? Cioč, hai fatto un controllo con if(mysql_query()) echo 
"Inserimento effettuato";?
Potrebbe essere un problema di apostrofi o robaccia varia, č tutto a posto 
con addslashes/stripslashes?
Ciao 

magari qualcuno invia il form senza compilare il modulo!

 magari qualcuno invia il form senza compilare il modulo!
no, naturalmente facciamo diversi controlli a riguardo!


 Ciao


 direttamente dal $_POST[]. 
Definisci "direttamente", fate dei controlli sui valori? Verificate
l'escaping e la lunghezza? Validate l'input? Loggate le query fallite?
 
Posta il codice.
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.

 fatto non succede nulla

 $_POST[].
Intanto potresti fare un controllo prima di fare l'inserimento, se i campi 
sono vuoti non fai l'inserimento... 

 vengono completamente persi.
Controllerei innanzitutto il passaggio che fanno queste variabili da una
pagina all'altra e soprattutto a come vengono inserite nel db.
Magari ci sono errori nella query d'inserimento se si inseriscono caratteri
particolari nel testo e non c'e' un'appropriata gestione degli errori nella
fase di inserimento
-- 
Ciao,
 Fabrizio
=== 
http://www.negusweb.it
 ===

> in javascript?
si, in javascript!


 fase di inserimento
abbiamo già escluso questa possibilità anche perchè il record viene
creato, solamente che i campi che avrebbero dovuto essere riepiti con i
dati provenienti dal $_POST sono vuoti!


 sono vuoti non fai l'inserimento...
si ok, me perchč sono vuoti? questo č il punto!


>>>> Posta il codice.
questo è quasi impossibile altrimenti l'avrei fatto..ci sono include da
tutte le parti... 
Mi rendo conto che questo sia un bel limite perchè ci possiate aiutare..!!
Ciao e Grazie comunque.


Salva le query SQL di insert in un file di testo a parte con la data e tutti
gli altri valori e solo dopo esegui lo stesso SQL per inserire i dati.
Quando si verifca il problema vatti a leggere un pò le tue Insert nel file
di testo.
AlbiX

 di testo.
Come rispondevo a Setec infatti faremo proprio cosě...vediamo se salta
fuori qualche cosa di interessante...
grazie.



se un utente ha il js disabilitato ed invia il form vuoto che succede?
se un utente ha il browser che non supporta il js che avete scritto ed invia
il form che succede?
secondo me è il controllo in js che non funziona correttamente.
--
Ciao da
    Ska-Man

 
Appunto!


 
Ciao,
al posto tuo, negli inserimenti filtrerei le variabili passate con post 
con la funzione
mysql_escape_string() (mai fare inserimenti diretti senza controllare le 
variabili!)
inoltre, prima di effettuare la query di inserimento verifica se le 
variabili sono a posto:
if(isset($_POST['cognome']) && strlen($_POST['cognome'])>2) etc etc.....
cosě eviti di registrare query vuote,
inoltre se le verifiche attualmente le effettui solo con javascript,
significa che chi non ha javascript abilitato (come qualche spider che 
effettua una scansione nel tuo sito) avvia un submit nella form senza 
controllare i valori vuoti.
Ciao
Faster2B

 dati provenienti dal $_POST sono vuoti!
Se i campi, effettivamente, arrivano da un form compilato a mano, senza
altri indizi sul codice scritto è difficile da risolvere; se l'invio dei
dati è automatico, allora è da considerare eventuali eccezioni
nell'automatismo.


 secondo me è il controllo in js che non funziona correttamente.
direi di no, diversi utenti (con i quali è capitato l'inconveniente che
illustravo) dopo essersi registrati ci hanno contattato dicendo di aver
inserito tutti i dati ma di non aver mai ricevuto la mail di notifca
registrazione...
Quindi se quello che dici può essere vero per alcuni casi nella stragrande
maggioranza delle volte è l'utente che ci comunica di aver inserito i dati
ma di non aver poi ricevuto riscontro..
