Hallo PHPers...
Ik heb een scriptje gemaakt waarmee je het aantal online gebruikers kan lezen. Ook is er een functie bijingebouwd voor het weergeven van het aantal online leden.

Zouden jullie even willen kijken of deze snippet in de scriptdatabase kan? (eventuele fouten of tips melden)

MVG Max van den Bosch

---------------Online_users.php-------------------------

<?php
session_start();
if (isset($_GET['destroy'])){
	session_destroy ();
}
$ip=$_SERVER['REMOTE_ADDR'];
$time=time();
$timeout=120+$time; //is in seconden
$dbhost = ""; // MySQL host
$dbuser = ""; // MySQL gebruikersnaam
$dbpass = ""; // MySQL wachtwoord
$dbname = ""; // database naam



	$sql="INSERT INTO onlineusers (ip, timeout";

		if (isset($_SESSION['username'])){
			$sql .=", username";
		}

	$sql.=") VALUES ('".$_SERVER['REMOTE_ADDR']."', $timeout";
		if (isset($_SESSION['username'])){
			$sql .=", '".$_SESSION['username']."'";
		}
	$sql .=")";
	// Connect to MySQL Database
	mysql_connect($dbhost,$dbuser,$dbpass);
	mysql_select_db($dbname) or die("Geen database geselecteerd");
		if (!mysql_query($sql)){
		echo "Er mislukte iets...</br>Technische informatie: ".mysql_error()."</br>";
		}



$sql="DELETE FROM onlineusers WHERE timeout < ".$time;
	if (!mysql_query($sql)){
	echo "Er mislukte iets...</br>Techinische informatie: ".mysql_error();
	}

$uitslag=mysql_query("SELECT DISTINCT ip  FROM `onlineusers` WHERE `username` IS NULL") or echo "Ophalen van gegevens is mislukt (1)";
$aantal_ongeregistreert=mysql_num_rows($uitslag);
$uitslag2=mysql_query("SELECT DISTINCT ip   FROM `onlineusers` WHERE `username` IS NOT NULL") or echo "Ophalen van gegevens is mislukt (2)";;
$aantal_geregistreert=mysql_num_rows($uitslag2);


echo "Online bezoekers: ".$aantal_ongeregistreert;
echo "</br>";
echo "Online leden: ".$aantal_geregistreert;



//BEKIJK timeout en time
//echo "</br>";
//echo "Timeout: ".$timeout;
//echo "</br>";
//echo "Time---:    ".$time;
//echo "</br>";
//echo "time(); = ".time();
if ($time == $timeout){
	echo "Error! Time en timeout zijn gelijk";
}
//Bugger, zodat eventuele fouten kunnen worden weergeven
mysql_close();
?>

- SanThe - op 12/06/2011 17:18:56

In elke echo-regel achter alle if(DEBUG_MODE)-regels zit een fout.

Dom, ik zie het nu ook. Ga het straks goed maken in de snippet.
Wouter J op 12/06/2011 19:29:04

[quote="- SanThe - op 12/06/2011 17:18:56"]
In elke echo-regel achter alle if(DEBUG_MODE)-regels zit een fout.

Dom, ik zie het nu ook. Ga het straks goed maken in de snippet.
[/quote]

Maakt niet uit, iedereen is wel eens dom (ik kijk nu even in de spiegel)
Max vd Bosch op 12/06/2011 19:25:33


[size=xsmall]Toevoeging op 12/06/2011 19:28:31:[/size]

Fixed


Nog steeds niet goed: Regel 73, 86, 96 en 110.
Max vd Bosch op 12/06/2011 19:46:50

Fixed 2


Yep.
Nog steeds niet goed toch? Ook regel 52 is fout, kijk maar eens naar de documentatie op php.net
?
Bedoel je
mysql_error($mysqlconnector);
?
The Force op 10/06/2011 14:14:17

[quote="Max vd Bosch op 10/06/2011 13:50:41"]
Veranderd. Zo beter?
@Arjan
Ik heb geleerd dat je altijd zo laat mogelijk je verbinding moet openen, en zo vroeg mogelijk moet sluiten, i.v.m hacking en snelheid.

Dat het bovenaan moet staan is onzin. Dat je leert om het zo laat mogelijk te openen en zo vroeg mogelijk te sluiten vind ik ook erg apart. Een soort van schijnveiligheid. En dan het 'performanceverschil'. Het verschil tussen beide uitersten zal niet eens meetbaar zijn (tenzij je wellicht het proces 10.000x herhaalt en dat gaat meten).
[/quote]

Dat het geen performance winst oplevert ben ik mij wel van bewust, maar het ging mij er om dat wanneer je met de mysql database verbindt midden in de scripting en je voegt daarna een query boven je connect handler toe, dat je dan de connect handler moet gaan verplaatsen. Daarom kan je beter gewoon een sql connectie ergens bovenaan (lees: niet absoluut bovenaan) je pagina aanmaken.

Reageren