Salve a tutti ragazzi,
è da tanto tempo che non vi chiedo qualcosa, ma è arrivato il momento perchè sto veramente uscendo pazzo senza neanche capire il motivo a causa del quale mi accade tutto ciò!!
Il problema, sintetizzandolo molto, è che dopo aver ricavato i dati da un form GET, li devo sovrascrivere interamente ad un db txt (sto utilizzando i txt per impararli come si deve).
Il problema non sono sicuro dove sorge, ma quando inserisco spazi vuoti e ho inserisco una combinazione di caratteri in alcuni campi, la pagina mi copia gli ultimi caratteri del rigo txt (a volte 2, a volte 1 e a volte 6)!!! di conseguenza, mi ritrovo con l'ultimo dato sballato!
Diciamo che potrei aggirare l'ostacolo sbattendomene, creando l'ultimo dato senza che m'interessi in modo che anche se mi copia qualcosa al suo interno, a me non interessa... ma non è possibile!!! perchè accade???? perchè me li copia??? e soprattutto perchè a volte si e a volte no??? e perchè a volte 2 e a volte 6??????
STO USCENDO PAZZO!!!!!
è un problema del fwrite??? di come lo apro??? di come controllo i campi e li riscrivo??? di come richiamo la pagina??? non ce la faccio più... sono 6 giorni che vado avanti così per tentare di capire....
e tra l'altro non trovo in rete niente di simile che sia capitato gia a qualcuno!...
di seguito vi posto la pagina del form (abbreviata) e la pagina di controllo e scrittura su txt.
--------- AIUTATEMI ------------------------------------------------------------------
*** modifica_impostazioni.php ********************************************
Codice PHP:
<? ?>
<form action="function/set_impostazioni2.php" id="impostazioni_account_form" method="get" >
/* qui mi porto il valore della pagina che mi serve essendo una chiamata dinamica */
<input type="hidden" id="from" name="from" value="account" />
/* qui mi porto tutti gli altri valori */
/* nome utente */
<input type="text" name="new_nome_utente" id="new_nome_utente" />
/* e mail */
<input type="text" name="new_mail" id="new_mail" />
<input type="text" name="new_mail2" id="new_mail2" />
/* password */
<input type="password" name="password" id="password" />
<input type="password" name="new_password" id="new_password" />
<input type="password" name="new_password2" id="new_password2" />
/* altre impostazioni da definire */
<input type="checkbox" name="https" id="https" <? if($security_https == "always") { echo "checked=\"checked\""; } ?> value="always" />
<input type="checkbox" name="notifiche" id="notifiche" <? if($security_notifiche == "always") { echo "checked=\"checked\""; } ?> value="always" />
<input type="checkbox" name="confirm_code" id="confirm_code" <? if($security_code == "always") { echo "checked=\"checked\""; } ?> value="always" />
/* un codice univoco di sicurezza */
<input type="password" name="security_personal_code" id="security_personal_code" />
<input type="submit" id="save" value="Salva tutto" />
<input type="reset" id="cancella_form" value="Annulla" /></div>
</form>
<? ?>
*** set_impostazioni2.php ********************************************
Codice PHP:
<?
$return_from = $_GET['from'];
if ($return_from == "account") {
/* PAGINA PER LA MODIFICA DELLE IMPOSTAZIONI ACCOUNT */
if(isset($_GET['new_nome_utente']) && $_GET['new_nome_utente'] != "") {
$nome_utente_inserito = $_GET['new_nome_utente'];
$conta_nome_utente = strlen($nome_utente_inserito);
if($conta_nome_utente < 6 || $conta_nome_utente > 20) { $result_new_nome_utente = "errore"; $focus_new_nome_utente = "si";}
else {
$result_new_nome_utente = "modificate";
$focus_new_nome_utente = "si";
}
} else { $focus_new_nome_utente = "no"; }
if($_GET['new_mail'] != "" && $_GET['new_mail2'] != "") {
$email_inserita = $_GET['new_mail'];
$email_inserita2 = $_GET['new_mail2'];
if(preg_match("/^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$/i", $email_inserita)) {
if ($email_inserita == $email_inserita2) {
$result_new_mail = "modificate";
$focus_new_mail = "si";
} else {$result_new_mail = "errore"; $focus_new_mail = "si";}
} else {$result_new_mail = "errore"; $focus_new_mail = "si";}
} else { $focus_new_mail = "no"; }
if($_GET['password'] != "" && $_GET['new_password'] != "" && $_GET['new_password2'] != "") {
$new_password_inserita = $_GET['new_password'];
$conta_new_password_inserita = strlen($new_password_inserita);
if($conta_new_password_inserita < 8 || $conta_new_password_inserita > 12) { $result_new_password = "errore"; $focus_new_password = "si";}
else {
$vecchia_password = md5($_GET['password']);
$nuova_password = md5($_GET['new_password']);
$nuova_password2 = md5($_GET['new_password2']);
$vecchia_password_2 = $_COOKIE['P'];
if ($vecchia_password == $vecchia_password_2){
if ($nuova_password == $nuova_password2) {
$result_new_password = "modificate";
$focus_new_password = "si";
} else {$result_new_password = "errore"; $focus_new_password = "si";}
} else {$result_new_password = "errore"; $focus_new_password = "si";}
}
} else { $focus_new_password = "no"; }
if ($result_new_nome_utente != "" && $focus_new_nome_utente != "no") {
$stringa_result_focus_new_nome_utente = "&changed_nome_utente=utente&changed_nome_utente_result=$result_new_nome_utente";
} else {
$stringa_result_focus_new_nome_utente = "";
}
if ($result_new_mail != "" && $focus_new_mail != "no") {
$stringa_result_focus_new_mail = "&changed_mail=mail&changed_mail_result=$result_new_mail";
}
else {
$stringa_result_focus_new_mail = "";
}
if ($result_new_password != "" && $focus_new_password != "no") {
$stringa_result_focus_new_password = "&changed_password=password&changed_password_result=$result_new_password";
} else {
$stringa_result_focus_new_password = "";
}
####################################################################
#
# PER IL CAMBIO DELLE IMPOSTAZIONI
#
####################################################################
$dominio_enc_cookie_cambio = $_COOKIE['D'];
$varv_cambia=fopen("../../mdb-database/$dominio_enc_cookie_cambio.txt","r+");
$leggiv_cambia=file("../../mdb-database/$dominio_enc_cookie_cambio.txt");
$utente_completo_cambia = count($leggiv_cambia) -1;
$element_cambia = explode("|-|-|", $leggiv_cambia[$utente_completo_cambia]);
$basic_info_dominio = $element_cambia[0];
$basic_info_cognome = $element_cambia[1];
$basic_info_datadinascita = $element_cambia[2];
$basic_info_indirizzo = $element_cambia[3];
$basic_info_telefono = $element_cambia[4];
$basic_info_cellulare = $element_cambia[5];
$basic_info_mail = $element_cambia[6];
$basic_info_azienda = $element_cambia[7];
$basic_info_azienda_indirizzo = $element_cambia[8];
$basic_info_azienda_telefono = $element_cambia[9];
$basic_info_azienda_piva = $element_cambia[10];
$basic_info_password = $element_cambia[11];
$basic_info_nomereale = $element_cambia[12];
$basic_info_nomeutente = $element_cambia[13];
$basic_info_nomeutente_enc = $element_cambia[14];
$basic_info_dominio_enc = $element_cambia[15];
$basic_info_cod_fiscale = $element_cambia[16];
$basic_info_comune_nascita = $element_cambia[17];
$basic_info_documento_type = $element_cambia[18];
$basic_info_documento_numero = $element_cambia[19];
$basic_info_documento_da = $element_cambia[20];
$basic_info_documento_del = $element_cambia[21];
$basic_info_mail_alternativa = $element_cambia[22];
$basic_info_azienda_cod_fiscale = $element_cambia[23];
#########################################
# MODIFICA NOME UTENTE 'AL VOLO'
#########################################
if($result_new_nome_utente == "modificate") { $nuovocambio_basic_info_nome_utente = $_GET['new_nome_utente']; $nuovocambio_basic_info_nome_utente_enc = md5($_GET['new_nome_utente']);
session_start();
$_SESSION['domain']=$basic_info_dominio_enc;
$_SESSION['username']=$nuovocambio_basic_info_nome_utente_enc;
setcookie("D", "$basic_info_dominio_enc", time()+86400, "/office");
setcookie("U", "$nuovocambio_basic_info_nome_utente_enc", time()+86400, "/office");
setcookie("P", "$basic_info_password", time()+86400, "/office");
}
else { $nuovocambio_basic_info_nome_utente = $basic_info_nomeutente; $nuovocambio_basic_info_nome_utente_enc = $basic_info_nomeutente_enc; }
########################################
# MODIFICA EMAIL PERSONALE
########################################
if($result_new_mail == "modificate") { $nuovocambio_basic_info_mail = $_GET['new_mail']; }
else { $nuovocambio_basic_info_mail = $basic_info_mail; }
########################################
# MODIFICA PASSWORD
########################################
if($result_new_password == "modificate") { $nuovocambio_basic_info_password = md5($_GET['new_password']);
session_start();
$_SESSION['domain']=$basic_info_dominio_enc;
$_SESSION['username']=$nuovocambio_basic_info_nome_utente_enc;
setcookie("D", "$basic_info_dominio_enc", time()+86400, "/office");
setcookie("U", "$nuovocambio_basic_info_nome_utente_enc", time()+86400, "/office");
setcookie("P", "$nuovocambio_basic_info_password", time()+86400, "/office");
}
else { $nuovocambio_basic_info_password = $basic_info_password; }
####################################
# SCRITTURA NEL DB TXT
####################################
$nuove_impostazioni = $basic_info_dominio."|-|-|".$basic_info_cognome."|-|-|".$basic_info_datadinascita."|-|-|".$basic_info_indirizzo."|-|-|".$basic_info_telefono."|-|-|".$basic_info_cellulare."|-|-|".$nuovocambio_basic_info_mail."|-|-|".$basic_info_azienda."|-|-|".$basic_info_azienda_indirizzo."|-|-|".$basic_info_azienda_telefono."|-|-|".$basic_info_azienda_piva."|-|-|".$nuovocambio_basic_info_password."|-|-|".$basic_info_nomereale."|-|-|".$nuovocambio_basic_info_nome_utente."|-|-|".$nuovocambio_basic_info_nome_utente_enc."|-|-|".$basic_info_dominio_enc."|-|-|".$basic_info_cod_fiscale."|-|-|".$basic_info_comune_nascita."|-|-|".$basic_info_documento_type."|-|-|".$basic_info_documento_numero."|-|-|".$basic_info_documento_da."|-|-|".$basic_info_documento_del."|-|-|".$basic_info_mail_alternativa."|-|-|".$basic_info_azienda_cod_fiscale;
fwrite($varv_cambia, $nuove_impostazioni);
fclose($varv_cambia);
echo "$nuove_impostazioni
";
echo "$focus_new_nome_utente";
}
?>
************************************************** *****************
Allora:
le ultime "echo" della pagina set_impostazioni2.php le ho inserite io adesso per poter vedere l'errore dove sta, ma non lo trovo... ad ogni modo al posto delle echo ci sarebbero degli header location (ma non penso ci azzecchino qualcosa).
Grazie mille a tutti anticipatamente...
ah e se avete qualche consiglio dato che il codice l'ho stilato per capire bene certi comportamenti, sono ben accetti! dei metodi alternativi e sintetici, o qualsiasi altra cosa.... basta che me lo spiegate.... l'importante per me è capire quello che faccio!!!
GRAZIE ANCORA
EDIT:
la combinazione di caratteri che mi modifica la stringa "$nuove_impostazioni" è:
da input nome_utente: "spazio spazio spazio spazio"
(che in barra GET equivale a "++++")
da input security_personal_code: "spazio56spazio745spazio674spazio"
(che in barra GET equivale a "+56+745+674+"
MA COSA C'ENTRA????