PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks. |
 |

22-08-2008, 15:39
|
DiamondDog
Newbie
|
|
Registriert seit: May 2006
Beiträge: 50
|
|
User Online Script ohne Funktion nur wieso?
Hallo Leute,
ich hab mir das Script von hier gezogen:
Link
und auf meine Seite hochgeladen nur leider funktrioniert das Script nicht und ich weiß nicht ganz wieso.
Hier gehts zur Test Seite
Hier gehts zur Txt
PHP Info
Ps: Rechte sind vergeben. Und der Debugg gibt au nix wieder.
|

22-08-2008, 15:45
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.727
|
|
register_globals? warum wendest du dich nicht an den autor des scriptes?
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

22-08-2008, 15:45
|
jahlives
Master  
|
|
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
|
|
Also die Testseite bringt sehr viel  Es scheint mir logisch, dass GET, POST und COOKIE leer sind/sein müssen, denn es werden keine URL Parameter, keine Formulardaten und keine Cookies übermittelt.
Von deiner Testseite müsste man wohl mal den PHP Quellcode sehen, sonst ist heiteres PHP-Fehler-Raten angesagt.
|

22-08-2008, 15:58
|
DiamondDog
Newbie
|
|
Registriert seit: May 2006
Beiträge: 50
|
|
Quellcode:
PHP-Code:
<?php
/*
user_online.php - Anzahl der Besucher Online
*/
// Konfiguration
$besucher_online_konfiguration = array (
// in welcher Datei soll es gespeichert werden
'datei' => 'besucher_online.txt',
// wie lange soll es dauern, bis ein Eintrag verfällt
'zeitlimit' => 300 // 5 Minuten
);
// zählt den aktuellen Besucher
function zaehle_besucher ($ident) {
// hole die Liste
$liste = hole_besucher_liste ();
// fuege das aktuelle Identifikationskriterium mit aktuellem Datum hinzu
$liste[$ident] = time ();
// schreibe die Liste
schreibe_besucher_liste ($liste);
}
// holt die Liste aus einer Datei
function hole_besucher_liste () {
// importiere die Konfiguration
global $besucher_online_konfiguration;
// initialisiere Array
$zeilen = array ();
// öffne datei
$fh = fopen ($besucher_online_konfiguration['datei'], 'r');
// fehler?
if (!is_resource ($fh)) {
return array ();
}
// sperre datei
$res = flock ($fh, LOCK_SH);
// gehe Zeilen durch
while (!feof ($fh)) {
$zeilen[] = fgets ($fh);
}
// entsperre Datei und schließe sie
flock ($fh, LOCK_UN);
fclose ($fh);
$ergebnis = array ();
// gehe die Zeilen durch
foreach ($zeilen as $zeile) {
// trenne Identifikationskriterium von Zeitstempel
list ($ident, $stempel) = explode ('|', $zeile, 2);
// wenn Identifikationskriterium leer ist, dann übergehen
if (empty ($ident)) {
continue;
}
// wenn stempel zu alt ist
if ($stempel < time() - $besucher_online_konfiguration['zeitlimit']) {
// übergehen
continue;
}
// füge zum Ergebnis hinzu
$ergebnis[$ident] = (int)$stempel;
}
return $ergebnis;
}
// gibt die Anzahl der Besucher zurück
function anzahl_besucher () {
return count (hole_besucher_liste ());
}
// schreibe die Liste zurück
function schreibe_besucher_liste ($liste) {
// importiere die Konfiguration
global $besucher_online_konfiguration;
$ergebnis = '';
// gehe die Liste durch
foreach ($liste as $ident => $stempel) {
$ergebnis .= "$ident|$stempel\n";
}
// öffne datei
$datei = fopen ($besucher_online_konfiguration['datei'], 'w');
// sperre datei
flock ($datei, LOCK_EX);
// Fehler?
if (!is_resource ($datei)) {
return false;
}
// schreibe das ergebnis
$cnt = fwrite ($datei, $ergebnis);
// fehler?
if ($cnt === false) {
// entsperren und schließen
flock ($datei, LOCK_UN);
fclose ($datei);
return false;
}
// schließe die Datei
flock ($datei, LOCK_UN);
fclose ($datei);
// wir sind fertig
return true;
}
?>
wie und was muß ich den ändern das das auch ohne register_globals läuft?
Sorry bin noch Anfänger hab daher nicht so die große Ahnung von PHP.
|

22-08-2008, 16:51
|
jahlives
Master  
|
|
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
|
|
Das sind aber nur Funktionsdefinitionen. Da erfolgt kein Funktionsaufruf nix. Ausserdem glaube ich nicht dass du ein register_globals() Problem hast, da ich in den Funktionen keinen Bezug auf globale Vars erkennen kann. Okay einen gibt es, aber in der Funktion wird die Var mit global korrekt addressiert.
|

22-08-2008, 16:59
|
DiamondDog
Newbie
|
|
Registriert seit: May 2006
Beiträge: 50
|
|
Hm.. ok wenns nicht an den register_globals liegt, wo liegt den dann der Hund begraben?
|

22-08-2008, 17:03
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
|
|
Zitat:
Das sind aber nur Funktionsdefinitionen. Da erfolgt kein Funktionsaufruf nix.
|
Den Quelltext der Test-Datei lieferst du auch nicht.
Eigene Ansätze = Null.
|

22-08-2008, 17:22
|
DiamondDog
Newbie
|
|
Registriert seit: May 2006
Beiträge: 50
|
|
Zitat:
Original geschrieben von TobiaZ

Den Quelltext der Test-Datei lieferst du auch nicht.
Eigene Ansätze = Null.
|
1. Ich hab gedebuggt und erkenne keinen Fehler
2. der Qeuellcode steht doch oben
bzw. der Code vom Script das <body> <html> usw kann man sich ja denken.
Ansonsten ist da nur noch der Code vom debugg drinne aber der sollte ja nicht wichtig sein.
|

22-08-2008, 17:32
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
|
|
Zitat:
1. Ich hab gedebuggt und erkenne keinen Fehler
|
Habe auch nichts gegenteiliges behauptet, oder?
Zitat:
2. der Qeuellcode steht doch oben
|
Wo? Du hast nen paar funktionsaufrufe gepostet, die wie gesagt nirgends aufgerufen werden. So what?
Zitat:
bzw. der Code vom Script das <body> <html> usw kann man sich ja denken. Ansonsten ist da nur noch der Code vom debugg drinne aber der sollte ja nicht wichtig sein.
|
Du glaubst also immer noch, dass ein paar Funktions-Definitionen ein lauffähiges Programm ausmachen? Wo hast du deine Grundlagen-Kenntnisse gelassen?
|

22-08-2008, 17:44
|
DiamondDog
Newbie
|
|
Registriert seit: May 2006
Beiträge: 50
|
|
1. ok... gibts nix mehr zu zu sagen.
2. Das is ja das was in meim Quellcode steht, dachte das das so funktioniert weil laut Orginalseite:
"Falls Sie sich für die Thematik nur oberflächlich interessieren, die Probleme ignorieren wollen und nur eine solche Anzeige realisieren wollen, dann reicht es aus, wenn Sie nur den nach unten ersten Lösungsvorschlag lesen sowie sich den nach unten Download holen"
Also wenn ich das richtig verstehe dann heist es runterladen hochladen und los gehts.
Da ich noch ziemlicher Anfänger in PHP bin hab ich nicht viel Grundlagen. Aber jetzt beim durchsehen ist mir aufgefallen das das Ergebniss nicht ausgegeben wird. Bleibt aber immer noch offen wieso nix in die besucher_online.txt geschrieben wird.
Edit:
Man sollte es vll mal hier mit versuchen:
Code:
<?php
// einbinden der Datei zum Zählen der Besucher, die Online sind
require 'user_online.php';
// diesen Besucher zählen
zaehle_besucher ($_SERVER['REMOTE_ADDR']);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Titel der Seite</title>
</head>
<body>
<?php $anz_besucher = anzahl_besucher(); ?>
<p>Es
<?php if ($anz_besucher == 1) { ?>
ist
<?php } else { ?>
sind
<?php } ?>
im Moment <?php echo $anz_besucher ?> Besucher online.</p>
</body>
</html>
dann klappts auch.
Geändert von DiamondDog (22-08-2008 um 18:01 Uhr)
|

22-08-2008, 18:03
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
|
|
|

22-08-2008, 18:07
|
DiamondDog
Newbie
|
|
Registriert seit: May 2006
Beiträge: 50
|
|
Zitat:
Original geschrieben von TobiaZ
Also Problem gelöst?
|
Richtig Problem gelöst. 1000 Dank fürs Helfen und für die Geduld.
Edit: Eine frage hab ich noch und zwar wieso zeigt er 1 User Online an wenn keiner Online ist müste er den Eintrag nicht normal auf 0 setzen?
Geändert von DiamondDog (22-08-2008 um 18:45 Uhr)
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Thema bewerten |
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|