[php] sessie probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heb hier een inlogsysteempje, werkt allemaal best goed.

Nu ben ik een scriptje aan het maken wat de online bezoekers weergeeft.
Op elke pagina schrijft ie dan de tijd naar de mysql database.

Ook laat ik aan de rechterkant van mijn site de gebruikers naam zien van de persoon die is ingelogd.

Had al een probleempje hiermee omdat het soms mijn tabellen verpest. Nu heb ik hiervoor wordwrap gebruikt, werkt ook allemaal goed.

Als je inlogd ga je automatisch naar een pagina daar registreerd de username in een sessie. Daarna meteen door naar een beveiligde pagina, daar schrijft ie de tijd naar de database van die gebruiker. Dat is het eerste wat ik doe in die pagina. Daarna komt de rest van de pagina dus ook die gebruikersnaam met die wordwrap. Dit werkt ook allemaal nog.

Als ik nu naar een andere pagina ga, daar wil ik ook weer de tijd wegschrijven maar dat doet ie niet met lange namen bv. keeeeeeeeees(korte namen wel)

Dus als iemand een hele lange gebruikersnaam heeft schrijft ie de tijd niet weg naar de database |:(

Dit komt volgens mij door die wordwrap. Heb ook een legepagina gemaakt met daarin alleen echo($username); daar geeft ie ook de naam neer met die wordwrap.

Ik heb het idee dat ie die wordwrap+username automatisch in de sessie zet.

Ik heb eigenlijk geen idee hoe ik dit moet oplossen, misschien weten jullie wat ik fout doe?

Als ik wat stukjes script moet laten zien hoor ik het wel want weet nu niet waar het probleem zit.

[ Voor 3% gewijzigd door Verwijderd op 14-09-2003 22:15 ]


Acties:
  • 0 Henk 'm!

  • slm
  • Registratie: Januari 2003
  • Laatst online: 12-11-2023

slm

Ik begrijp eigenlijk niets van jouw verhaal.
daar schrijft ie de tijd naar de database van die gebruiker
Elke gebruiker heeft een andere database??
Als ik nu naar een andere pagina ga, daar wil ik ook weer de tijd wegschrijven maar dat doet ie niet met lange namen
Wat hebben lange namen ermee te maken?

Ik zie de link niet tussen lange namen, tijden en wegschrijven naar een database...

To study and not think is a waste. To think and not study is dangerous.


Acties:
  • 0 Henk 'm!

  • Snow_King
  • Registratie: April 2001
  • Laatst online: 20-09 12:29

Snow_King

Konijn is stoer!

je wou toch niet zeggen dat je de username's wegschrijft in de database?
je schrijft toch hopelijk de userID weg?

dan moet je lange name probleem zo verholpen zijn lijkt mij ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ok, probeer het nog een keer.

Als een lid inlogt schrijft ie automatisch de huidige tijd naar de database
die wil ik dan verglijken met een tijd om te kijken of iemand online is maar dat is het probleem nu niet want dat werkt wel.

Heb alleen een probleem met wegschrijven van die tijd, met iemand die een lange naam heeft bv. keeeeeeeeeees.

ik denk dat dat komt omdat ik diezelfde username ook met een wordwrap laat zien en dat ie die onthoud ofzo.

op dat te testen laat ik hem ook echo-en in een nieuwe pagina
echo($username);

dit moet er staan: keeeeeeeeees
en dit kom er te staan:keeeeee eeees

dus hij neemt die wordwrap mee |:(

schrijf hem zo weg:

query = "Update users SET online = '$online' WHERE naam = '$username'";
$MQ = mysql_query($query) or die ("FOUT:".mysql_error());


Als jullie nog meer willen weten hoor ik het wel

[ Voor 25% gewijzigd door Verwijderd op 14-09-2003 23:01 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Snow_King nee schrijf de tijd weg als een ingelogd lid een pagina bezoekt

[ Voor 12% gewijzigd door Verwijderd op 14-09-2003 22:56 ]


Acties:
  • 0 Henk 'm!

  • slm
  • Registratie: Januari 2003
  • Laatst online: 12-11-2023

slm

Afgezien van de wenselijkheid van een dergelijk online script, het volgende:

code:
1
where naam = '$username'"


Kan voor heel veel problemen zorgen, zoals o.a.:
1. usernames met quotes kunnen een foutieve query opleveren
2. usernames met special chars/quotes kunnen soms niet goed teruggezocht worden als je geen extra acties treft
3. een (mogelijk) groot beveiligingsprobleem ! Ik zie namelijk niet waar je die $username vandaan trekt en of je vóór deze query nog wat doet met die string.

Daarnaast is het beter om met userid's te werken zoals Snow_King al aangeeft.

To study and not think is a waste. To think and not study is dangerous.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ok, maar die wordwrap breekt ie af bij de 10e letter

alle namen die korter zijn dan 10 karakters aan elkaar, daar schrijft ie de tijd wel weg naar de database en die langer dan 10 aan elkaar niet.

Als iemand inlogd en drukt op "inloggen" gaat ie naar een scriptje dat de username in een sessie zet daarna meteen naar die beveiligde pagina.

ff kort samen gevat, het werkt wel alleen niet met leden met een naam meer dan 10 karakters aan elkaar.

Acties:
  • 0 Henk 'm!

Verwijderd

Daarom moet/kan je dus ook veel beter ID's gebruiken voor de users, dan heb je dat probleem van die wordwrap ook niet, je hoeft dan namelijk de username niet op te slaan, maar alleen een nummertje... Dat is hierboven al meerdere keren gezegd of zelfs uitgelegd...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ok, ga dat ff proberen

edit: het werkt _/-\o_

[ Voor 39% gewijzigd door Verwijderd op 15-09-2003 09:21 ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Gebruik gewoon

echo wordwrap($username)

en doe niet

$username=wordwrap($username)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok nu werkt het idd maar nu krijg ik errors in mijn forum :(

heb dus dat id nummer opgeslapgen in een sessie, als $id2
want als ik $id in een sessie opsla herkent ie hem niet.

Als ik zonder ingelogd ben naar het forum ga werkt alles goed maar ga ik inloggen en dan naar het forum dan krijg ik een hele lijst met errors te zien.

Heb ook een een tabel in mysql voor het forum daar staat ook een $id in voor de berichten en denk dat daar de problemen ook mee zijn.

Weet iemand hoe dit kan?

dit is het script:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
<?php session_start();?>
<html>

<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>Hard-Music</title>
<link rel="stylesheet" href="../stylesheet.css" type="text/css">
<link rel="stylesheet" href="../linkjes.css" type="text/css">
<link rel="stylesheet" href="forum.css" type="text/css">
<style type="text/css">
<!--
-->
</style>
</head>

<body 
text="#000000">
<table border="0" width="698" height="104" align="center">
        <tr> 
          <td bgcolor="#FFFFFF" bordercolor="#FFFFFF"
                height="75" width="750">[img]"../graphics/kop2.gif"[/img]</td>
        </tr>
      </table>
        
      
<table border="1" width="751" bordercolor="#FFFFFF"
        height="443" class="zijkanthoofdtabel" align="center">
  <tr> 
          <td valign="top" bgcolor="#FFFFFF"
                bordercolor="#FFFFFF" height="465"> 
            <table width="730" border="0" height="64" align="center" class="Linkstabelkleur">
              <tr> 
                <td width="49"> 
                  
            <div align="center"><b><a href="../index.php" class='vier'>home</a>-</b></div>
                </td>
                <td width="53"> 
                  
            <div align="center"><b><a href="algemeen.php" class='vier'>forum</a>-</b></div>
                </td>
                <td width="81"> 
                  
            <div align="center"></div>
                </td>
                <td width="10">&nbsp;</td>
                <td width="485"> 
                  <div align="center"> 
                    <hr>
              <b><font color="#4967B6" size="5" face="Verdana, Arial, Helvetica, sans-serif">forum</font><font color="#4967B6" size="4"> 
              </font></b></div>
                  <hr>
                </td>
              </tr>
            </table>
      <?php
$nummer=$id;
$database_server = mysql_connect("localhost.localdomain","hard-music01", "*(****");


//selecteer db
mysql_select_db("hard-music_nl_-_leden")
or die ("fout: openen databases mislukt");

//hier maken we een menu aan 10 berichten per pagina laten zien.

$limiet = 10;     

// Query voor het tellen van het totale aantal rows 
$result = mysql_query("SELECT topicnr FROM algemeen_reply WHERE topicnr=$nummer"); 
$totaal = mysql_num_rows($result); 

// Als er geen beginstand is opgegeven zet hem dan op 1 
if (!isset($begin)) 
    $begin = 1; 


//voer de query uit
$result=mysql_query("SELECT * FROM algemeen_reply WHERE topicnr=$nummer ORDER BY tijd2  LIMIT $begin, $limiet"); 


while (list($topicnr, $onderwerp, $user, $tijd2, $bericht,)=
mysql_fetch_row($result))


{}?>





    
      <div align="center">
<center>
          <table width="100%" border="0">
            <tr> 
              <td width="65%" height="19" bgcolor="#FFFFFF"> 
                <?php
//voer de query uit
$result=mysql_query("SELECT * FROM algemeen WHERE id=$nummer"); 


while (list($topicnr, $onderwerp, $user, $tijd2, $bericht,)=
mysql_fetch_row($result))


{echo("<hr color='#4967B6'><font face='Verdana, Arial, Helvetica, sans-serif' size='4'><b>$onderwerp</b></font><hr color='#4967B6'>");
$onderw=$onderwerp;
session_register("onderw");}?>
              <td width="1%" height="19">&nbsp;</td>
              <td width="31%" height="19">&nbsp; </td>
              <td width="3%" height="19">&nbsp;</td>
            </tr>
          </table>
          </center>
            </div>





            <table width="100%" border="0" height="212">
              <tr>



                <td width="614" height="289" valign="top"> 
                  <?php

//hier gaan we het hoofd bericht plaatsen

//maak de tabel aan
echo "<table width='95%' border='2' bordercolor='#4967B6' align='center' height='116'>";


 


//voer de query uit
$result=mysql_query("SELECT * FROM algemeen WHERE id=$id");

while (list($id, $onderwerp, $user, $tijd, $tijd2, $bericht,)=
mysql_fetch_row($result))
{
//zet timestamp om naar leesbare datum
$tijd8 = date("d-m-y, H:i:s",$tijd);

//zet de enters om in html en de smilies worden hier toegekend.
$bericht = nl2br ($bericht);
$bericht = str_replace(":)", "[img]'../smile/smile.gif'[/img]", $bericht); 
$bericht = str_replace(":(", "[img]'../smile/unhappy.gif'[/img]", $bericht); 
$bericht = str_replace(":D", "[img]'../smile/biggrina.gif'[/img]", $bericht); 
$bericht = str_replace(":d", "[img]'../smile/biggrina.gif'[/img]", $bericht); 
$bericht = str_replace(":@", "[img]'../smile/frown.gif'[/img]", $bericht); 
$bericht = str_replace(":p", "[img]'../smile/puh2.gif'[/img]", $bericht); 
$bericht = str_replace(":P", "[img]'../smile/puh2.gif'[/img]", $bericht); 
$bericht = str_replace(":braak", "[img]'../smile/pukey.gif'[/img]", $bericht);
$bericht = str_replace(":wave", "[img]'../smile/wave.gif'[/img]", $bericht);
$bericht = str_replace(":cry", "[img]'../smile/cry.gif'[/img]", $bericht);
$bericht = str_replace(":nono", "[img]'../smile/nono.gif'[/img]", $bericht);
$bericht = str_replace(":jump", "[img]'../smile/anim-jjd.gif'[/img]", $bericht);
$bericht = str_replace(":love", "[img]'../smile/love.gif'[/img]", $bericht);
$bericht = str_replace(":kus", "[img]'../smile/kusje.gif'[/img]", $bericht);
$bericht = str_replace(":-", "[img]'../smile/loveit.gif'[/img]", $bericht);
$bericht = str_replace(":b", "[img]'../smile/yummie.gif'[/img]", $bericht);
$bericht = str_replace(":B", "[img]'../smile/yummie.gif'[/img]", $bericht);
$bericht = str_replace(":sheep", "[img]'../smile/sheep.gif'[/img]", $bericht);
$bericht = str_replace(":evil", "[img]'../smile/devil.gif'[/img]", $bericht);
$bericht = str_replace(":up", "[img]'../smile/icontup.gif'[/img]", $bericht);
$bericht = str_replace(":under", "[img]'../smile/icontdown.gif'[/img]", $bericht);
$user = wordwrap($user, 15, "\n", 1);
$bericht = wordwrap($bericht, 30, "\n", 1);





echo("<table width='98%' border='1' bordercolor='#4967B6' align='center' height='116' class='tabel2'>".
"<tr bgcolor='#C9DFF1'> <td width='20%' height='10' bordercolor='ffffff' bgcolor='#4967B6'>" . 
"<div align='center'><font face='Verdana, Arial, Helvetica, sans-serif' color='#ffffff' size='2'><b>$user</b></font></div></td>" . 
"<td height='10' bgcolor='#4967B6'>" . 
"<div align='right'><font size='2' face='Verdana, Arial, Helvetica, sans-serif'><font color='#FFFFFF'><b><font color='#ffffff'>$tijd8</font></b></font></div></td></tr><tr>" . 
"<td  bgcolor='#ffffff' height='77' width='25%' valign='top' class='linkerkant'><hr width='133' valign='center'><table width='95%'><tr><td></td></hr></table></td>".
"<td   bordercolor='#ffffff' bgcolor='#ffffff' height='77'width='75%'valign='top'><font face='Verdana, Arial, Helvetica, sans-serif' size='2'><hr>$bericht</font></td></tr></table><br>");


}

$limiet = 10;     

// Query voor het tellen van het totale aantal rows 
$result = mysql_query("SELECT tijd2 FROM algemeen_reply"); 
$totaal = mysql_num_rows($result); 

// Als er geen beginstand is opgegeven zet hem dan op 1 
if (!isset($begin)) 
    $begin = 1; 


//voer de query uit
$result=mysql_query("SELECT * FROM algemeen_reply WHERE topicnr=$nummer ORDER BY tijd2 LIMIT $begin, $limiet"); 


while (list($topicnr, $onderwerp, $user, $tijd2, $bericht,)=
mysql_fetch_row($result))


{
//zet timestamp om naar leesbare datum
$tijd8 = date("d-m-y, H:i:s",$tijd2);

//zet de enters om in html en de smilies worden hier toegekend.
$bericht = nl2br ($bericht);
$bericht = str_replace(":)", "[img]'../smile/smile.gif'[/img]", $bericht); 
$bericht = str_replace(":(", "[img]'../smile/unhappy.gif'[/img]", $bericht); 
$bericht = str_replace(":D", "[img]'../smile/biggrina.gif'[/img]", $bericht); 
$bericht = str_replace(":d", "[img]'../smile/biggrina.gif'[/img]", $bericht); 
$bericht = str_replace(":@", "[img]'../smile/frown.gif'[/img]", $bericht); 
$bericht = str_replace(":p", "[img]'../smile/puh2.gif'[/img]", $bericht); 
$bericht = str_replace(":P", "[img]'../smile/puh2.gif'[/img]", $bericht); 
$bericht = str_replace(":braak", "[img]'../smile/pukey.gif'[/img]", $bericht);
$bericht = str_replace(":wave", "[img]'../smile/wave.gif'[/img]", $bericht);
$bericht = str_replace(":cry", "[img]'../smile/cry.gif'[/img]", $bericht);
$bericht = str_replace(":nono", "[img]'../smile/nono.gif'[/img]", $bericht);
$bericht = str_replace(":jump", "[img]'../smile/anim-jjd.gif'[/img]", $bericht);
$bericht = str_replace(":love", "[img]'../smile/love.gif'[/img]", $bericht);
$bericht = str_replace(":kus", "[img]'../smile/kusje.gif'[/img]", $bericht);
$bericht = str_replace(":-", "[img]'../smile/loveit.gif'[/img]", $bericht);
$bericht = str_replace(":b", "[img]'../smile/yummie.gif'[/img]", $bericht);
$bericht = str_replace(":B", "[img]'../smile/yummie.gif'[/img]", $bericht);
$bericht = str_replace(":sheep", "[img]'../smile/sheep.gif'[/img]", $bericht);
$bericht = str_replace(":evil", "[img]'../smile/devil.gif'[/img]", $bericht);
$bericht = str_replace(":up", "[img]'../smile/icontup.gif'[/img]", $bericht);
$bericht = str_replace(":under", "[img]'../smile/icontdown.gif'[/img]", $bericht);
$user = wordwrap($user, 13, "\n", 1);
$bericht = wordwrap($bericht, 30, "\n", 1);




echo("<table width='95%' border='2' bordercolor='#4967B6' align='center' height='116' class='tabel2'>".
"<tr bgcolor='#C9dff1'> <td width='18%' height='9' bordercolor='#ffffff' bgcolor='#4967b6'>" . 
"<div align='center'><font face='Verdana, Arial, Helvetica, sans-serif'  color='#ffffff' size='4'><b>$user</b></font></div></td>" . 
"<td height='9' bgcolor='#4967b6'>" . 
"<div align='right'><font size='2' face='Verdana, Arial, Helvetica, sans-serif'><font color='#FFFFFF'><b>$tijd8</font></b></font></div></td></tr><tr>" . 
"<td height='77' width='25%' valign='top' class='linkerkant'><hr width='125'><table width='95%'><tr><td></td></hr></table></td>".
"<td height='77'width='75%' bordercolor='#ffffff' valign='top'><font face='Verdana, Arial, Helvetica, sans-serif' size='2'><hr>$bericht</font></td></tr></table><br>");



}
?>
                </td>
          <td width="126" height="289" bgcolor="#4967B6" valign="top"> 
            <table width="90%" border="0" align="center">
              <tr>
                <td> 
                  <p align="center">

<?php
if ($username=$username){
$ja=true;
echo("
<font face='Verdana, Arial, Helvetica, sans-serif' color='#ffffff' size='3'><b>$username</b></font><hr>");
                  
}else{
$ja=false;
echo("<a href='../login.php' class='tien'>inloggen?</a><hr>");}?>

                  <p align="center">&nbsp; </p>
                  <p>&nbsp; </p>
                  <p>&nbsp;</p>
                </td>
              </tr>
              <tr>
                <td>&nbsp;</td>
              </tr>
            </table>
          </td>

               
             </tr>


            </table>
<hr>
            <table border="0" valign="top" align="left" width="615" bordercolor="#C9DFF1">
              <tr>
                
              <td valign="top" width="486"> 
                <?php
//als user en wachtwoord goed zijn kan men hier een reply maken.

if($username=$username){
$rep=true;
echo("<a href='reply_algemeen.php?topicnr=$nummer'>[img]'../graphics/reply.gif'[/img]</a>");
}else{
$rep=false;
echo("<font face='Verdana, Arial, Helvetica, sans-serif' size='2'>eerst inloggen</font>");
}?>
              </td>
                
              
          <td valign="top" width="119">&nbsp; </td>
              </tr>
            </table>

            
          <p align="left"><br>
          </p>
          <hr>
          <p align="left">&nbsp; </p>
            
        </td>
    </tr>
</table>

</body>
</html>


dit de errors:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/html/forum/zien_algemeen.php on line 72

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/html/forum/zien_algemeen.php on line 84


Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/html/forum/zien_algemeen.php on line 105


Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/html/forum/zien_algemeen.php on line 144

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/html/forum/zien_algemeen.php on line 206

[ Voor 97% gewijzigd door Verwijderd op 15-09-2003 12:12 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Het ziet ernaar uit dat je queries fout zijn :)

Gebruik mysql_error()

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
niet dat was het niet, had in een sessie nog een $id staan dat gooide de hele boel in de war.

Het is nou opgelost
Pagina: 1