- Home
- Categorie
- Coding e Sistemistica
- PHP
- Ho un problema alla mia chat e cerco qualcuno che mi aiuti a risolverlo
-
@ayrton2001 said:
Non ci sto capendo più niente con i post e i get.
Puoi postarmi o allegarmi i file allo stato attuale?ok, quello che ti posto è il file ins_ut.php allo stato attuale con i POST (ho provato per curiosità a mettere i GET al posto dei POST ma la registrazione di un nuovo utente non viene permessa:
ecco il file:
[php]<?
if(!isset($_POST['Submit']))
{
echo "
<script language="javascript">
alert("Non hai i permessi per accedere a questa pagina");
</script>
";exit;
}
?>
<html>
<head>
<title>Registrazione alla chat</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FBBEAA">
<?
include("config.php");
$ip = $_SERVER['REMOTE_ADDR'];
$nick=$_POST['nick'];
$nick=strtolower($nick);/conversione della stringa del nick in minuscolo/
$nick=stripslashes($nick);/toglie gli slashes aggiunti ad una stringa
con addslòashes/
$password=$_POST['password'];
$password=strtolower($password);/conversione della stringa della
password in minuscolo/
$password_cr=crypt($password,$nick);/criptazione di tipo DES della
password usando come chiave la stringa del nick/
$password_cr=str_replace("|","*",$password_cr);/*questa la si definisce
una criptazione aggiuntiva: se nella password criptata sono presenti
| sono sostituiti con * /
$age=(int)$_POST['age'];/qquio si verifica che eta sia intera ,altro controllo
per la sicurezza/
if(!(int)$age)
{
echo "
<script>
alert("Inserimento di un dato non numerico");
history.back();
</script>
";
exit;
}
$sex=$_POST['sex'];
$nation=$_POST['nation'];
$hobbies=$_POST['hobbies'];
$nation=stripslashes($nation);
$hobbies=stripslashes($hobbies);
if (!(file_exists($file_reg)))
{fopen($file_reg,"w");}
$utente_ok=1;
$ut_regist=file($file_reg);/si memorizza il file in un vettore ;ogni
elemento del vettore corrisponde ad ogni riga del file/
$dim_reg=count($ut_regist);/conta le righe del vettore/
/ora che il file è un vettore era meglio utilizzare un foreach
piuttosto che un for/
for ($i=0;$i<$dim_reg;$i++)
{
$utente=chop($ut_regist);/chop è alias di rtrim ed elimina spazi ed
altro dalla fine del file in questo caso dalla riga in cui andremo a
scrivere/
$dati_ut=explode("|",$utente);/considerando ogni riga come un array si
separa ogni elemento dell'array con un |/
$nick_ut=$dati_ut[0];
$pass_ut=$dati_ut[1];
if ( ($nick==$nick_ut) | ($password_cr==$pass_ut) ) $utente_ok=0; /si
controlla che il nick o la passwords nopn esistano/
}
if ($utente_ok==1)
{
if (empty($nick) | empty($password) | empty($nation) | empty($sex) |
empty($hobbies))
{
echo "<center><font face="Verdana" size="2">NON HAI RIEMPITO UNO O
PIU' CAMPI</font></center><br><br>";
echo "<center><font face="Verdana" size="2"><a
href="javascript:history.back();">TORNA INDIETRO</a></font></center>";
}
else /in caso in cui tutti i campi siano stati tutti riempiti/
{
$utente=$nick."|".$password_cr."|".$age."|".$sex."|".$nation."|".$hobbies."|".$ip."\n";
$ins_utente=fopen($file_reg,"a+");/si scive i dati dell'utente nel
vettore-filre/
fputs($ins_utente,$utente);
fclose($ins_utente);
echo "<center><font face="Verdana" size="3">SEI REGISTRATO ALLA CHAT.<br> PER ENTRARE E SCRIVERE NELLA CHAT, CHIUDI QUESTA FINESTRA DI CONFERMA DELL'AVVENUTA REGISTRAZIONE, ED EFFETTUA IL LOGIN INSERENDO NEI DUE RISPETTIVI CAMPI IL NICKNAME E LA PASSWORD SCELTI.</font></center>";
}
}
else
echo "<center>Nick o password già utilizzata.<br><a
href="javascript:history.back();">Torna indietro</a><center>";
?>
</body>
</html>[/php]ah sappimi dire per tutte le altre richieste della mia risposta precedente, grazie!
-
@giulio3x said:
ok, quello che ti posto è il file ins_ut.php allo stato attuale con i POST (ho provato per curiosità a mettere i GET al posto dei POST ma la registrazione di un nuovo utente non viene permessa:
ecco il file:
[php]<?
if(!isset($_POST['Submit']))
{
echo "
<script language="javascript">
alert("Non hai i permessi per accedere a questa pagina");
</script>
";exit;
}
?>
<html>
<head>
<title>Registrazione alla chat</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FBBEAA">
<?
include("config.php");
$ip = $_SERVER['REMOTE_ADDR'];
$nick=$_POST['nick'];
$nick=strtolower($nick);/conversione della stringa del nick in minuscolo/
$nick=stripslashes($nick);/toglie gli slashes aggiunti ad una stringa
con addslòashes/
$password=$_POST['password'];
$password=strtolower($password);/conversione della stringa della
password in minuscolo/
$password_cr=crypt($password,$nick);/criptazione di tipo DES della
password usando come chiave la stringa del nick/
$password_cr=str_replace("|","*",$password_cr);/*questa la si definisce
una criptazione aggiuntiva: se nella password criptata sono presenti
| sono sostituiti con * /
$age=(int)$_POST['age'];/qquio si verifica che eta sia intera ,altro controllo
per la sicurezza/
if(!(int)$age)
{
echo "
<script>
alert("Inserimento di un dato non numerico");
history.back();
</script>
";
exit;
}
$sex=$_POST['sex'];
$nation=$_POST['nation'];
$hobbies=$_POST['hobbies'];
$nation=stripslashes($nation);
$hobbies=stripslashes($hobbies);
if (!(file_exists($file_reg)))
{fopen($file_reg,"w");}
$utente_ok=1;
$ut_regist=file($file_reg);/si memorizza il file in un vettore ;ogni
elemento del vettore corrisponde ad ogni riga del file/
$dim_reg=count($ut_regist);/conta le righe del vettore/
/ora che il file è un vettore era meglio utilizzare un foreach
piuttosto che un for/
for ($i=0;$i<$dim_reg;$i++)
{
$utente=chop($ut_regist);/chop è alias di rtrim ed elimina spazi ed
altro dalla fine del file in questo caso dalla riga in cui andremo a
scrivere/
$dati_ut=explode("|",$utente);/considerando ogni riga come un array si
separa ogni elemento dell'array con un |/
$nick_ut=$dati_ut[0];
$pass_ut=$dati_ut[1];
if ( ($nick==$nick_ut) | ($password_cr==$pass_ut) ) $utente_ok=0; /si
controlla che il nick o la passwords nopn esistano/
}
if ($utente_ok==1)
{
if (empty($nick) | empty($password) | empty($nation) | empty($sex) |
empty($hobbies))
{
echo "<center><font face="Verdana" size="2">NON HAI RIEMPITO UNO O
PIU' CAMPI</font></center><br><br>";
echo "<center><font face="Verdana" size="2"><a
href="javascript:history.back();">TORNA INDIETRO</a></font></center>";
}
else /in caso in cui tutti i campi siano stati tutti riempiti/
{
$utente=$nick."|".$password_cr."|".$age."|".$sex."|".$nation."|".$hobbies."|".$ip."\n";
$ins_utente=fopen($file_reg,"a+");/si scive i dati dell'utente nel
vettore-filre/
fputs($ins_utente,$utente);
fclose($ins_utente);
echo "<center><font face="Verdana" size="3">SEI REGISTRATO ALLA CHAT.<br> PER ENTRARE E SCRIVERE NELLA CHAT, CHIUDI QUESTA FINESTRA DI CONFERMA DELL'AVVENUTA REGISTRAZIONE, ED EFFETTUA IL LOGIN INSERENDO NEI DUE RISPETTIVI CAMPI IL NICKNAME E LA PASSWORD SCELTI.</font></center>";
}
}
else
echo "<center>Nick o password già utilizzata.<br><a
href="javascript:history.back();">Torna indietro</a><center>";
?>
</body>
</html>[/php]ah sappimi dire per tutte le altre richieste della mia risposta precedente, grazie!
Se il form della registrazione ha l'attributo method importato a post deve funzionare.
-
non ho capito consa non funziona con post :():
-
@ayrton2001 said:
non ho capito consa non funziona con post :():
no fermo...è con GET che adesso non funziona più nulla, per quello ho dovuto lasciare tutti i post, chiedevo a te se potevo lasciare questo file con tutti i POST o era meglio rimetterli a GET, visto e considerato che tutta la chat funzia cob GET.
e poi sappimi dire per il formato della data...
questo invece è il file di qualche mese fa e funzionava pure se aveva tutti i get:
[PHP]<html>
<head>
<title>Registrazione alla chat</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FBBEAA">
<?
include("config.php");
$nick=$_GET['nick'];
$nick=strtolower($nick);
$nick=stripslashes($nick);
$password=$_GET['password'];
$password=strtolower($password);
$password_cr=crypt($password,$nick);
$password_cr=str_replace("|","*",$password_cr);
$age=$_GET['age'];
$sex=$_GET['sex'];
$nation=$_GET['nation'];
$hobbies=$_GET['hobbies'];$nation=stripslashes($nation);
$hobbies=stripslashes($hobbies);
if (!(file_exists($file_reg)))
{fopen($file_reg,"w");}
$utente_ok=1;
$ut_regist=file($file_reg);
$dim_reg=count($ut_regist);
for ($i=0;$i<$dim_reg;$i++)
{
$utente=chop($ut_regist*);
$dati_ut=explode("|",$utente);
$nick_ut=$dati_ut[0];
$pass_ut=$dati_ut[1];
if ( ($nick==$nick_ut) | ($password_cr==$pass_ut) ) $utente_ok=0;
}
if ($utente_ok==1)
{
if (empty($nick) | empty($password) | empty($nation) | empty($sex) | empty($hobbies))
{
echo "<center><font face="Verdana" size="2">NON HAI RIEMPITO UNO O PIU' CAMPI</font></center><br><br>";
echo "<center><font face="Verdana" size="2"><a href="javascript:history.back();">TORNA INDIETRO</a></font></center>";
}
else
{
$utente=$nick."|".$password_cr."|".$age."|".$sex."|".$nation."|".$hobbies."\n";
$ins_utente=fopen($file_reg,"a+");
fputs($ins_utente,$utente);
fclose($ins_utente);
echo "<center>Sei registrato alla chat.<br> <a href="login.php">Vai al login</a></center>";
}
}
else
echo "<center>Nick o password già utilizzata.<br><a href="javascript:history.back();">Torna indietro</a><center>";
?>
</body>
</html>
[/PHP]
-
@giulio3x said:
no fermo...è con GET che adesso non funziona più nulla, per quello ho dovuto lasciare tutti i post, chiedevo a te se potevo lasciare questo file con tutti i POST o era meglio rimetterli a GET, visto e considerato che tutta la chat funzia cob GET.
e poi sappimi dire per il formato della data...
questo invece è il file di qualche mese fa e funzionava pure se aveva tutti i get:
[php]<html>
<head>
<title>Registrazione alla chat</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FBBEAA">
<?
include("config.php");
$nick=$_GET['nick'];
$nick=strtolower($nick);
$nick=stripslashes($nick);
$password=$_GET['password'];
$password=strtolower($password);
$password_cr=crypt($password,$nick);
$password_cr=str_replace("|","*",$password_cr);
$age=$_GET['age'];
$sex=$_GET['sex'];
$nation=$_GET['nation'];
$hobbies=$_GET['hobbies'];$nation=stripslashes($nation);
$hobbies=stripslashes($hobbies);
if (!(file_exists($file_reg)))
{fopen($file_reg,"w");}
$utente_ok=1;
$ut_regist=file($file_reg);
$dim_reg=count($ut_regist);
for ($i=0;$i<$dim_reg;$i++)
{
$utente=chop($ut_regist*);
$dati_ut=explode("|",$utente);
$nick_ut=$dati_ut[0];
$pass_ut=$dati_ut[1];
if ( ($nick==$nick_ut) | ($password_cr==$pass_ut) ) $utente_ok=0;
}
if ($utente_ok==1)
{
if (empty($nick) | empty($password) | empty($nation) | empty($sex) | empty($hobbies))
{
echo "<center><font face="Verdana" size="2">NON HAI RIEMPITO UNO O PIU' CAMPI</font></center><br><br>";
echo "<center><font face="Verdana" size="2"><a href="javascript:history.back();">TORNA INDIETRO</a></font></center>";
}
else
{
$utente=$nick."|".$password_cr."|".$age."|".$sex."|".$nation."|".$hobbies."\n";
$ins_utente=fopen($file_reg,"a+");
fputs($ins_utente,$utente);
fclose($ins_utente);
echo "<center>Sei registrato alla chat.<br> <a href="login.php">Vai al login</a></center>";
}
}
else
echo "<center>Nick o password già utilizzata.<br><a href="javascript:history.back();">Torna indietro</a><center>";
?>
</body>
</html>
[/php]
Stai facendo un po di confusione.
Allora quando dici non funziona piuù... cosa? La registrazione, l'inserimento o altro?
La registrazione dovrebbe andare sempre che il form abbia method="post"
-
ok dai lascierò con tutti i post tanto funziona lo stesso...
ho però una brutta notizia da darti... anche se abbiamo fatto il blocco del reinvio del messaggio, il solito utente quando mi scrive sulla chat, compare il messaggio due volte, dimmi qualcosa a riguardo. prima non lo faceva e per prima intendo prima di fare la modifica alla pagina messaggi.php e del maintenance.php...:?:bho:
cosa cavolo può essere...?:(
-
domanda:
a te capita?
sai con che browser?
-
@giulio3x said:
ok dai lascierò con tutti i post tanto funziona lo stesso...
ho però una brutta notizia da darti... anche se abbiamo fatto il blocco del reinvio del messaggio, il solito utente quando mi scrive sulla chat, compare il messaggio due volte, dimmi qualcosa a riguardo. prima non lo faceva e per prima intendo prima di fare la modifica alla pagina messaggi.php e del maintenance.php...:?:bho:
cosa cavolo può essere...?:(
La funzione della disabilitazione del pulsante a te funziona? Ossia se clicchi su inserisci viene disabilitato il pulsante? Potrebbe darsi che non te ne rendi conto perchè magari tu hai una connessione veloce e lui no, oppure tu provi quando non c'è nesuno o in locale. Assicurati che il tasto venga veramente disabilitato. Puoi anche scrivere un messaggio e "mitragliare" sul pulsante.
-
@ayrton2001 said:
La funzione della disabilitazione del pulsante a te funziona? Ossia se clicchi su inserisci viene disabilitato il pulsante? Potrebbe darsi che non te ne rendi conto perchè magari tu hai una connessione veloce e lui no, oppure tu provi quando non c'è nesuno o in locale. Assicurati che il tasto venga veramente disabilitato. Puoi anche scrivere un messaggio e "mitragliare" sul pulsante.
ciao ayrton, ma certo che funziona perchè il pulsante appena io invio il messaggio il pulsante vedo che si disabilita e anche ho provato a mitragliarlo, me non succede e nemmeno agli altri, ma a questo utente prima non gli faceva questo problema perchè scriveva e veniva solo una volta scritto il messaggio.
un caso del genere prima di queste nostre modifiche capitava ad un'altro utente quando io avevo provato la funzione flock...allora a quell'altro utente i messaggi comparivano due volte ma a me e agli altri non succedeva...
che possa dipendere allora ayrton dal flock che hai inserito su maintenance.php?
ciao!:?
-
@giulio3x said:
ciao ayrton, ma certo che funziona perchè il pulsante appena io invio il messaggio il pulsante vedo che si disabilita e anche ho provato a mitragliarlo, me non succede e nemmeno agli altri, ma a questo utente prima non gli faceva questo problema perchè scriveva e veniva solo una volta scritto il messaggio.
un caso del genere prima di queste nostre modifiche capitava ad un'altro utente quando io avevo provato la funzione flock...allora a quell'altro utente i messaggi comparivano due volte ma a me e agli altri non succedeva...
che possa dipendere allora ayrton dal flock che hai inserito su maintenance.php?
ciao!:?
Non credo dipenda da flock. Innanzitutto che browser utilizza? ha javascript abilitato? Fai una prova: disabilita javascript e mitraglia 4/5 volte
-
@ayrton2001 said:
Non credo dipenda da flock. Innanzitutto che browser utilizza? ha javascript abilitato? Fai una prova: disabilita javascript e mitraglia 4/5 voltema guarda che sei davvero bravo sai... ho disabilitato java e ho inviato 5 volte e porca miseria me l'ha scritto 5 volte....allora cosa devo fare? devo dire a questo utente di abilitare javascript o cosa mi cosigli?comunque sei preparatissimo bravo hai risolto anche questo mistero!
- e poi... ho in mente di cambiare il formato della data io ora uso questo:
[".date("H:i - d/m/Y")."]
ma mi viene il 2007 tutto esteso, conosci qualche altra forma che mi venga invece che:
06/08/2007 mi venga invece così: 06/08/07?
- e poi... ho in mente di cambiare il formato della data io ora uso questo:
-
@giulio3x said:
ma guarda che sei davvero bravo sai... ho disabilitato java e ho inviato 5 volte e porca miseria me l'ha scritto 5 volte....allora cosa devo fare? devo dire a questo utente di abilitare javascript o cosa mi cosigli?comunque sei preparatissimo bravo hai risolto anche questo mistero!
- e poi... ho in mente di cambiare il formato della data io ora uso questo:
[".date("H:i - d/m/Y")."]
ma mi viene il 2007 tutto esteso, conosci qualche altra forma che mi venga invece che:
06/08/2007 mi venga invece così: 06/08/07?
Mizzica... arrossisco. Comunque mi sento portato e mi piace il problem solving :).
Ora sono un po indaffarato. Appena posso penso ad una soluzione (se c'è)
- e poi... ho in mente di cambiare il formato della data io ora uso questo:
-
un amico ha fatto questo per le date spero ti possa essere utile
-
@massimux said:
un amico ha fatto questo per le date spero ti possa essere utile
forte massimux, grazie infinite, proprio al mio caso, e poi è utile nel caso vorrò più avanti apportare altre modifiche all'ora o alla data, molte grazie!!!;)
-
@giulio3x said:
- e poi... ho in mente di cambiare il formato della data io ora uso questo:
[".date("H:i - d/m/Y")."]
ma mi viene il 2007 tutto esteso, conosci qualche altra forma che mi venga invece che:
06/08/2007 mi venga invece così: 06/08/07?
[".date("H:i - d/m/y")."]
con y minuscolo
- e poi... ho in mente di cambiare il formato della data io ora uso questo:
-
@giulio3x said:
ma guarda che sei davvero bravo sai... ho disabilitato java e ho inviato 5 volte e porca miseria me l'ha scritto 5 volte....allora cosa devo fare? devo dire a questo utente di abilitare javascript o cosa mi cosigli?comunque sei preparatissimo bravo hai risolto anche questo mistero!
Forse si potrebbe risolvere in un modo.Non so quale è il tuo ultimo insert.php
Prendo uno postato tempo fa come esempio:
[php] <html>
<head>
<title>Inserimento del messaggio</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?
include("config.php");
$nick=$_GET['nick'];
$password=$_GET['password'];
$messaggio=$_GET['messaggio'];
$messaggio=stripslashes($messaggio);
$messaggio=str_replace("\n"," ",$messaggio);
$commento="[".date("H:i - d/m/Y")."] ".$nick."|".$messaggio."\n";
if ( !empty($_GET['faccina']) ) $commento = $_GET['faccina']." ".$commento ;
$url="chat.php"."?nick=".$nick."&password=".$password;
if ( !empty($_GET['faccina']) ) $url .= "&faccina=".$_GET['faccina'] ;$cercamsg = strstr($messaggio,"<");
$cercamsg2 = strstr($messaggio,">");if (empty($messaggio))
{
Header("Location: $url");
}
elseif ($cercamsg & $cercamsg2)
{
Header("Location: $url");
}
else
{
$apri_file=fopen($file_mess,"a+");
fputs($apri_file,$commento);
fclose($apri_file);
Header("Location: $url");
}
?>
</body>
</html>[/php]Innanzitutto togli l'html iniziale e finale:
[php]<?
include("config.php");
$nick=$_GET['nick'];
$password=$_GET['password'];
$messaggio=$_GET['messaggio'];
$messaggio=stripslashes($messaggio);
$messaggio=str_replace("\n"," ",$messaggio);
$commento="[".date("H:i - d/m/Y")."] ".$nick."|".$messaggio."\n";
if ( !empty($_GET['faccina']) ) $commento = $_GET['faccina']." ".$commento ;
$url="chat.php"."?nick=".$nick."&password=".$password;
if ( !empty($_GET['faccina']) ) $url .= "&faccina=".$_GET['faccina'] ;$cercamsg = strstr($messaggio,"<");
$cercamsg2 = strstr($messaggio,">");if (empty($messaggio))
{
Header("Location: $url");
}
elseif ($cercamsg & $cercamsg2)
{
Header("Location: $url");
}
else
{
$apri_file=fopen($file_mess,"a+");
fputs($apri_file,$commento);
fclose($apri_file);
Header("Location: $url");
}
?>[/php]Poi inserisci queste righe all'inizio:
[php]<?
//inizio nuove righe
ob_start();
echo '...attendere...';
ob_flush();
flush();
//fine nuove righe
include("config.php");
$nick=$_GET['nick'];
$password=$_GET['password'];
//...
?>[/php]Fammi sapere
-
ok ayrton come sempre grazie, ora ho apportato le modifiche e poi quando l'utente scriverà nuovamente ti faccio sapere...:)
-
@giulio3x said:
ok ayrton come sempre grazie, ora ho apportato le modifiche e poi quando l'utente scriverà nuovamente ti faccio sapere...:)
Prova prima tu. Io non so se così si risolve il problema.
In pratica faccio visualizzare subito la pagina insert senza aspettare il salvataggio sul file del messaggio.
-
@ayrton2001 said:
Prova prima tu. Io non so se così si risolve il problema.
In pratica faccio visualizzare subito la pagina insert senza aspettare il salvataggio sul file del messaggio.ah ok, si a me funziona lo stesso come prima cioè ho provato a disabilitare javascript e ho premuto 3 volte il tasto e me l'ha inviato 3 volte...quindi credo che non si sia risolto nulla purtroppo...
ho notato un altro particolare...adesso quando faccio partire il maintenance il file non si rimpicciolisce più come mai?
-
@giulio3x said:
ah ok, si a me funziona lo stesso come prima cioè ho provato a disabilitare javascript e ho premuto 3 volte il tasto e me l'ha inviato 3 volte...quindi credo che non si sia risolto nulla purtroppo...
Credo ci sia poco da fare.@giulio3x said:
ho notato un altro particolare...adesso quando faccio partire il maintenance il file non si rimpicciolisce più come mai?
Quante righe contiene? Forse meno di 70?