Hilfe bei einem Counterscript

PHP, Ajax, CSS, HTML, Javascript
Eben für die wirklich Harten, die alles selber machen.
Icke
Beiträge: 104
Registriert: So 20.Jun, 2021 16:15

Re: Hilfe bei einem Counterscript

Beitrag von Icke »

Mrgen Oxpus,

ich habe den counter mal online:
Gruß Ingo
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Hilfe bei einem Counterscript

Beitrag von oxpus »

Ja, wie man sieht, sieht man nichts.
Wie schaut das Script denn jetzt in Gänze aus?
Werden überhaupt die richtigen Daten in die Tabellen geschrieben?
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Icke
Beiträge: 104
Registriert: So 20.Jun, 2021 16:15

Re: Hilfe bei einem Counterscript

Beitrag von Icke »

Hallo Oxpus,

wie man sieht nichts!? Ich sehe

Ich sehe 9 Positionen !!!
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Hilfe bei einem Counterscript

Beitrag von oxpus »

Ja richtig. Und bis auf das Datum sind alle leer bzw. ohne Werte.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Icke
Beiträge: 104
Registriert: So 20.Jun, 2021 16:15

Re: Hilfe bei einem Counterscript

Beitrag von Icke »

Hallo Oxpus,

ja genau! ?9
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Hilfe bei einem Counterscript

Beitrag von oxpus »

Ich wiederhole mich nur ungern:
oxpus hat geschrieben: So 04.Jul, 2021 08:53 Wie schaut das Script denn jetzt in Gänze aus?
Werden überhaupt die richtigen Daten in die Tabellen geschrieben?
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Icke
Beiträge: 104
Registriert: So 20.Jun, 2021 16:15

Re: Hilfe bei einem Counterscript

Beitrag von Icke »

Hallo Oxpus,

nein zur Zeit erfolgt keine Eintragung in der DB und auch keine Ausgabe!

Code: Alles auswählen

<?  include($_SERVER["DOCUMENT_ROOT"].'/kopf.php');
	include_once($_SERVER["DOCUMENT_ROOT"].'/includes/config.inc');
	include($_SERVER["DOCUMENT_ROOT"].'/includes/lang/'.$lang.'/main.inc');
	$ip = $_SERVER["REMOTE_ADDR"];
	$zeit = time();
	$datum = date("d.m.Y");
	$ablaufzeit = time() - 86400; //  IP Sperre!
//--- Alte IP-Adresse löschen -------------------------------------------
	$sql = 'DELETE * FROM counter_ip WHERE zeit <= ' . (int) $ablaufzeit;
	mysqli_query($db, $sql);
// --- Ist die IP-Adresse schon in der DB-Tabelle
	if ( $sql = "SELECT ip FROM counter_ip WHERE ip='" . (string) mysqli_real_escape_string($db, $ip) . "'  ";
		mysqli_query($db, $sql);  )		
			{		
// Nein, IP-Adresse und Timestamp eintragen	
	$sql = "INSERT INTO counter_ip (ip, zeit) VALUES ('" . (string) mysqli_real_escape_string($db, $ip) . "', " . time() . ") ";
	mysqli_query($db, $sql);
// Counter aktualisieren
	$sql = 'UPDATE counter_stats SET besucher=besucher + 1 WHERE datum=' . (int) $datum . ' ';
	mysqli_query($db, $sql);
	if (mysqli_num_rows()==0) 
 		{ $sql = 'INSERT INTO counter_stats (datum,besucher) VALUES (' . (int) $datum . ','1'); '; }
			mysqli_query($db, $sql);
			}
// Hits aktualisieren
	$sql = 'UPDATE counter_stats SET hits=hits + 1 WHERE datum=' . (int) $datum . ' ';
	mysqli_query($db, $sql);
// -----------------------------------------------------------------------------------------------------------------
// Counter Daten von heute
	$sql = 'SELECT besucher,hits FROM counter_stats WHERE datum = ' . (int) $datum . '';
	mysqli_query($db, $sql);
	$result = mysqli_fetch_row();
		list($besucher_heute, $hits_heute);
// Counter Daten gesamt
	$sql = 'SELECT sum(besucher), sum(hits) FROM counter_stats WHERE 1';
	mysqli_query($db, $sql);
	$result = mysqli_fetch_row();
		list($besucher_gesamt, $hits_gesamt);
// Hits von Gestern
	$sql = 'SELECT * FROM counter_stats WHERE datum = ' . (int) $datum .'" ';
	mysqli_query($db, $sql);
	$result = mysqli_fetch_row();
		list($hits_gestern, $besucher_gestern);
// Besucher Online
	$sql = 'SELECT COUNT(*) AS ip FROM counter_ip';
	mysqli_query($db, $sql);
	$result = mysqli_fetch_row();
		list($besucher_online);
// registrierte Besucher Online
	$sql = 'SELECT COUNT(*) AS ip FROM users';
	mysqli_query($db, $sql);
	$result = mysqli_fetch_row();
		list($besucher_online_reg);
// Besucher Gestern
$sql = "SELECT * FROM counter_stats ORDER BY id DESC LIMIT 1,1 "; 
	if($result = mysqli_query($db, $sql));
		{
 		while($row = $result->fetch_assoc())
			{
			$besucher_gestern = $row['besucher'];
			$hits_gestern = $row['hits'];
			}
		}
// Anzeigen
echo '
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/m.gif>&nbsp;<span class=text>' . $text_0428 . $datum . '</span><br>
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/m.gif>&nbsp;<span class=text>' . $text_0205 . $besucher_online_reg . ' </span><br>
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/m.gif>&nbsp;<span class=text>' . $text_0200 . $besucher_online . '  </span><br>
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/m.gif>&nbsp;<span class=text>' . $text_0201 . $besucher_heute . ' </span><br>
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/m.gif>&nbsp;<span class=text>' . $text_0369 . $besucher_gestern . ' </span><br>
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/m.gif>&nbsp;<span class=text>' . $text_0202 . $besucher_gesamt . ' </span><br>
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/m.gif>&nbsp;<span class=text>' . $text_0203 . $hits_heute . ' </span><br>
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/m.gif>&nbsp;<span class=text>' . $text_0370 . $hits_gestern . ' </span><br>
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/e.gif>&nbsp;<span class=text>' . $text_0204 . $hits_gesamt . ' </span><br>
';
?>
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Hilfe bei einem Counterscript

Beitrag von oxpus »

Zunächst:
Bitte für das Posten des Scripts oder Teile daraus den BBCode CODE verwenden!
Als "Zitat" kann man den Programmcode nur schwerlich kopieren!

Danke!!!


Dann sind im Script wieder mehrere logische Fehler enthalten, die ich bereits schon mal durchgekaut hatte. Es schaut auch schlimmer aus, als zuvor!

if ($sql = "SELECT ip FROM counter_ip WHERE ip='" . (string) mysqli_real_escape_string($db, $ip) . "'";
Die Bedingung Ist immer WAHR, da die Zuweisung einer Variable in der Regel auch immer erfolgreich ist.
Und der zweite Teil, also der Versuch, in einer IF-Bedingung eine Datenbankabfrage auszuführen, ist auch WAHR, denn diese ist auch immer erfolgreich, ausser die Datenbankverbindung wäre nicht vorhanden.

Wenn also schon geprüft werden soll, ob ein Datensatz vorhanden ist, muss dieser erst einmal ausgelesen werden, bevor das Ergebnis in einer if-Bedingung geprüft wird.

Der gesamte Part für das aktualisieren oder einfügen der Daten ist somit unlogisch und falsch, müsste also so besser passen:

Code: Alles auswählen

	// --- Ist die IP-Adresse schon in der DB-Tabelle
	$sql = "SELECT ip FROM counter_ip WHERE ip='" . (string) mysqli_real_escape_string($db, $ip) . "'";
	$result = mysqli_query($db, $sql);		
	$ip_exists = mysqli_num_rows($result);

	if ($ip_exists)		
	{		
		// Ja, dann Counter aktualisieren
		$sql = "UPDATE counter_stats SET besucher=besucher + 1, hits=hits + 1 WHERE datum='" . (int) $datum . "'";
		mysqli_query($db, $sql);
	}
	else
	{
		// Nein, IP-Adresse und Timestamp eintragen	
		$sql = "INSERT INTO counter_ip (ip, zeit) VALUES ('" . (string) mysqli_real_escape_string($db, $ip) . "', " . time() . ")";
		mysqli_query($db, $sql);
		$sql = "INSERT INTO counter_stats (besucher, hits, datum) VALUES (1, 1, '" . (string) mysqli_real_escape_string($db, $datum) . "')";
	}

Dann das Abrufen der Daten:

Code: Alles auswählen

// Counter Daten von heute
	$sql = 'SELECT besucher,hits FROM counter_stats WHERE datum = ' . (int) $datum . '';
	mysqli_query($db, $sql);
	$result = mysqli_fetch_row();
		list($besucher_heute, $hits_heute);
Und was soll diese Form der Abfrage?

mysqli_query() liefert eine Verbindung zum Abfrageergebnis zurück, sofern dieses mit SELECT abgerufen wird.
Also muss das Ergebnis in einer Variable landen.
$result = mysqli_query($db, $sql); wäre hier also korrekt.
$result = mysqli_fetch_row(); sollte man dann aus 2 Gründen nicht verwenden:
$result beinhaltet nach der zuvor genannten Anweisung bereits die Verbindung zum Abfrageergebnis.
Besser sollte hier eine anderen Variable verwendet werden, in der Regel verwendet man dafür $row.
Und mysqli_fetch_row bedeutet, dass in $row dann an Index 0 der Wert des ersten Feldes, an Index 1 der des 2. Feldes, etc. vorhanden ist.
Das kann man so machen, ist aber in der Anwendung von $row dann schwieriger.
Besser wäre mysqli_fetch_assoc zu verwenden, da damit anstatt der nummerischen Schlüssel die Feldnamen verwendet werden.
Somit würde $row unter anderem Schlüsselpaare wie $row['benutzer'] beinhalten, welches dann den abgefragten Wert besitzt.

list($besucher_heute, $hits_heute); ist an dieser Stelle auch wieder komplett daneben, da list() als Eingangsquelle ein Array voraussetzt, welches so nicht angegeben wird.
Die Syntax von list() lautet:

Code: Alles auswählen

list($var1, $vat2, $vatn) = $array;
Wobei $array() das Objekt ist, welches die betreffenden Werte besitzt.
Aber wie bereits genannt, ist list() eher unglücklich, um solche Zuweisungen zu machen und zudem auch unsicher, kann also auch bei falscher Anwendung zu Datenfehlern führen.

Kurzum wird aus dem nicht funktionierenden Abfrageversuch besser der nachfolgende Code entstehen müssen bzw. können:

Code: Alles auswählen

// Counter Daten von heute
	$sql = "SELECT besucher,hits FROM counter_stats WHERE datum = '" . (int) $datum . "'";
	$result = mysqli_query($db, $sql);
	$row = mysqli_fetch_assoc($result);
	$besucher_heute = $row['besucher'];
	$hits_heute = $row['hits'];
Und noch einmal:
Es gibt im gesamten Script keinerlei Bezug zwischen den beiden Tabellen counter_stats und counter_ip.
Woher soll das Script wissen, welcher Datensatz zu was gehört?
Die IP in der Tabelle counter_ip zu speichern, wäre daher vollkommen sinnlos, ohne einen sinnvollen Zusammenhang zwischen diesen beiden Tabellen.
Es würde also nur ein Besucher und die Hits hochgezählt, wenn die IP vorhanden ist.
Diese wird aber ja gespeichert, wenn diese fehlt und dann der Besucher und die Hits mit jeweils 1 in die Tabelle counter_stats eingefügt.
Was, wenn in der Tabelle dieser Datensatz schon existiert, da eine andere IP zuvor gespeichert wurde?
Denn das würde passieren und damit Besucher und Hits schlichtweg um jeweils 1 erhöhen, aber das über mehrere Datensätze hinweg.
Da eben in der Tabelle counter_stats nicht mit gespeichert wird, entstehen in dieser Tabelle unschöne Datenrdopplungen.

Und zuletzt sein auch erwähnt, dass die Speicherung der IP-Adresse ohne Zustimmung der Besitzer ein Verstoß gegen die DSGVO (Datenschutzgrundverordnung) darstellt. Das aber jetzt mal gänzlich außen vor gelassen...

Ich sehe hier eine großes Wissenslücke, wie man überhaupt mittels PHP Daten in eine Datenbank schreibt, wieder ausliest und darstellt.
Daher empfehle ich einschlägige Literatur, welche es auch online zu genüge gibt.

Da ich die Struktur der beiden Tabellen weiterhin nicht kenne, weiß ich auch nicht, ob die Datensätze so wie von mir angegeben überhaupt gespeichert werden können. Das geht nämlich dann nicht, wenn man z. B. versucht, einen Text in ein numerisches Feld zu speichern oder umgekehrt eine nicht korrekt angegebene Zahl in ein Textfeld.
Somit würde ich zumindest Screenshots von den Tabellenstrukturen benötigen, um das für das Script korrekt berücksichtigen zu können.

Und insgesamt geht das Thema mittlerweile auch schon sehr weit über die bloße "Hilfestellung" hinaus.
Das das Script nach jeder meiner "Hilfestellungen" immer neue komplette Logikfehler und Syntax-Fehler beinhaltet, ist es schwer, weiterhin geduldig nur "Hilfestellungen" zu geben, wenn das wesentliche Basiswissen für PHP zu fehlen scheint...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Icke
Beiträge: 104
Registriert: So 20.Jun, 2021 16:15

Re: Hilfe bei einem Counterscript

Beitrag von Icke »

Hallo Oxpus,

also wiedereinmal was von mir: die IP und die Zeit werden in die DB eingetragen.

Gruß Ingo
Icke
Beiträge: 104
Registriert: So 20.Jun, 2021 16:15

Re: Hilfe bei einem Counterscript

Beitrag von Icke »

Hallo Oxpus,

hier die Daten der DB counter_ip
-- phpMyAdmin SQL Dump
-- version 4.9.2
-- https://www.phpmyadmin.net/
--
-- Erstellungszeit: 08. Jul 2021 um 07:27
-- Server-Version: 5.7.33-log
-- PHP-Version: 7.2.25

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Datenbank: `DB3831814`
--

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `counter_ip`
--

CREATE TABLE `counter_ip` (
`ip` varchar(24) COLLATE latin1_general_ci NOT NULL,
`zeit` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

--
-- Indizes der exportierten Tabellen
--

--
-- Indizes für die Tabelle `counter_ip`
--
ALTER TABLE `counter_ip`
ADD PRIMARY KEY (`ip`),
ADD KEY `ip` (`ip`);
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Icke
Beiträge: 104
Registriert: So 20.Jun, 2021 16:15

Re: Hilfe bei einem Counterscript

Beitrag von Icke »

Hallo Oxpus,

und die counter_stats
-- phpMyAdmin SQL Dump
-- version 4.9.2
-- https://www.phpmyadmin.net/
--
-- Erstellungszeit: 08. Jul 2021 um 07:29
-- Server-Version: 5.7.33-log
-- PHP-Version: 7.2.25

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Datenbank: `DB3831814`
--

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `counter_stats`
--

CREATE TABLE `counter_stats` (
`ID` int(11) NOT NULL,
`datum` varchar(10) COLLATE latin1_general_ci NOT NULL,
`besucher` int(11) NOT NULL,
`hits` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

--
-- Daten für Tabelle `counter_stats`
--

INSERT INTO `counter_stats` (`ID`, `datum`, `besucher`, `hits`) VALUES
(3, '21.12.2018', 822, 2131),
(1, '00.00.0000', 1489056, 3713725),
(2, '20.12.2018', 697, 1452),
(4, '11.12.2018', 62, 207),
(5, '26.12.2018', 469, 1094),
(6, '27.12.2018', 422, 680),
(8, '28.12.2018', 419, 992),
(9, '29.12.2018', 390, 1104),
(10, '30.12.2018', 467, 843),
(11, '31.12.2018', 471, 5759),
(12, '01.01.2019', 432, 5251),
(13, '02.01.2019', 528, 9330),
(14, '03.01.2019', 646, 8840),
(15, '04.01.2019', 661, 6947),
(16, '05.01.2019', 506, 4415),
(17, '06.01.2019', 423, 2366),
(547, '08.07.2021', 1, 1);

--
-- Indizes der exportierten Tabellen
--

--
-- Indizes für die Tabelle `counter_stats`
--
ALTER TABLE `counter_stats`
ADD PRIMARY KEY (`ID`),
ADD KEY `id` (`ID`);

--
-- AUTO_INCREMENT für exportierte Tabellen
--

--
-- AUTO_INCREMENT für Tabelle `counter_stats`
--
ALTER TABLE `counter_stats`
MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=548;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Icke
Beiträge: 104
Registriert: So 20.Jun, 2021 16:15

Re: Hilfe bei einem Counterscript

Beitrag von Icke »

Hallo Oxpus,

die Ausgabe läuft !

Nur wird in de DB folgendes eingetragen:
(549, '08.07.2021', 28, 105),
(550, '08.07.2021', 28, 104),
(551, '08.07.2021', 28, 103),
(552, '08.07.2021', 28, 102),
(553, '08.07.2021', 28, 101),
(554, '08.07.2021', 28, 100),
(555, '08.07.2021', 28, 99),
(556, '08.07.2021', 28, 98),
(557, '08.07.2021', 28, 97),
(558, '08.07.2021', 28, 96),
(559, '08.07.2021', 28, 95),
(560, '08.07.2021', 28, 94),
(561, '08.07.2021', 28, 93),
(562, '08.07.2021', 28, 92),
(563, '08.07.2021', 28, 91),
(564, '08.07.2021', 28, 90),
(565, '08.07.2021', 28, 89),
(566, '08.07.2021', 28, 88),
(567, '08.07.2021', 28, 87),
(568, '08.07.2021', 28, 86),
(569, '08.07.2021', 28, 85),
(570, '08.07.2021', 28, 84),
(571, '08.07.2021', 28, 83),
(572, '08.07.2021', 28, 82),
(573, '08.07.2021', 28, 81),
(574, '08.07.2021', 28, 80),
(575, '08.07.2021', 28, 79),
(576, '08.07.2021', 28, 78),
(577, '08.07.2021', 28, 77),
(578, '08.07.2021', 28, 76),
(579, '08.07.2021', 28, 75),
(580, '08.07.2021', 28, 74),
(581, '08.07.2021', 28, 73),
(582, '08.07.2021', 28, 72),
(583, '08.07.2021', 28, 71),
(584, '08.07.2021', 28, 70),
(585, '08.07.2021', 28, 69),
(586, '08.07.2021', 28, 68),
(587, '08.07.2021', 28, 67),
(588, '08.07.2021', 28, 66),
(589, '08.07.2021', 28, 65),
(590, '08.07.2021', 28, 64),
(591, '08.07.2021', 28, 63),
(592, '08.07.2021', 28, 62),
(593, '08.07.2021', 28, 61),
(594, '08.07.2021', 28, 60),
(595, '08.07.2021', 28, 59),
(596, '08.07.2021', 28, 58),
(597, '08.07.2021', 28, 57),
(598, '08.07.2021', 28, 56),
(599, '08.07.2021', 28, 55),
(600, '08.07.2021', 27, 53),
(601, '08.07.2021', 26, 51),
(602, '08.07.2021', 25, 49),
(603, '08.07.2021', 24, 47),
(604, '08.07.2021', 23, 45),
(605, '08.07.2021', 22, 43),
(606, '08.07.2021', 21, 41),
(607, '08.07.2021', 20, 39),
(608, '08.07.2021', 19, 37),
(609, '08.07.2021', 18, 35),
(610, '08.07.2021', 17, 33),
(611, '08.07.2021', 16, 31),
(612, '08.07.2021', 15, 29),
(613, '08.07.2021', 14, 27),
(614, '08.07.2021', 13, 25),
(615, '08.07.2021', 12, 23),
(616, '08.07.2021', 11, 21),
(617, '08.07.2021', 10, 19),
(618, '08.07.2021', 9, 17),
(619, '08.07.2021', 8, 15),
(620, '08.07.2021', 7, 13),
(621, '08.07.2021', 6, 11),
(622, '08.07.2021', 5, 9),
(623, '08.07.2021', 4, 7),
(624, '08.07.2021', 3, 5),
(625, '08.07.2021', 2, 3),
(626, '08.07.2021', 1, 1);
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Hilfe bei einem Counterscript

Beitrag von oxpus »

Dieses Script erzeugt bei mir nun korrekte Einträge und spuckt diese auch wieder aus:

Code: Alles auswählen

<?php

	include($_SERVER["DOCUMENT_ROOT"].'/kopf.php');
	include_once($_SERVER["DOCUMENT_ROOT"].'/includes/config.inc');
	include($_SERVER["DOCUMENT_ROOT"].'/includes/lang/'.$lang.'/main.inc');
	$ip = $_SERVER["REMOTE_ADDR"];
	$zeit = time();
	$datum = date("d.m.Y");
	$ablaufzeit = time() - 86400; //  IP Sperre!
//--- Alte IP-Adresse löschen -------------------------------------------
	$sql = 'DELETE * FROM counter_ip WHERE zeit <= ' . (int) $ablaufzeit;
	mysqli_query($db, $sql);
	// --- Ist die IP-Adresse schon in der DB-Tabelle
	$sql = "SELECT ip FROM counter_ip WHERE ip='" . (string) mysqli_real_escape_string($db, $ip) . "'";
	$result = mysqli_query($db, $sql);		
	$ip_exists = mysqli_num_rows($result);

	if ($ip_exists)		
	{		
		// Ja, dann Counter aktualisieren
		$sql = "UPDATE counter_stats SET besucher=besucher + 1, hits=hits + 1 WHERE datum='" . (string) mysqli_real_escape_string($db, $datum) . "'";
		mysqli_query($db, $sql);
	}
	else
	{
		// Nein, IP-Adresse und Timestamp eintragen	
		$sql = "INSERT INTO counter_ip (ip, zeit) VALUES ('" . (string) mysqli_real_escape_string($db, $ip) . "', " . time() . ")";
		mysqli_query($db, $sql);
		$sql = "INSERT INTO counter_stats (besucher, hits, datum) VALUES (1, 1, '" . (string) mysqli_real_escape_string($db, $datum) . "')";
		mysqli_query($db, $sql);
	}
// -----------------------------------------------------------------------------------------------------------------
// Counter Daten von heute
	$sql = "SELECT besucher,hits FROM counter_stats WHERE datum = '" . (string) mysqli_real_escape_string($db, $datum) . "'";
	$result = mysqli_query($db, $sql);
	$row = mysqli_fetch_assoc($result);
	if ($row)
	{
		$besucher_heute = $row['besucher'];
		$hits_heute = $row['hits'];
	}
// Counter Daten gesamt
	$sql = 'SELECT sum(besucher) besucher, sum(hits) hits FROM counter_stats WHERE 1';
	$result = mysqli_query($db, $sql);
	$row = mysqli_fetch_assoc($result);
	if ($row)
	{
		$besucher_gesamt = $row['besucher'];
		$hits_gesamt = $row['hits'];
	}
// Hits von Gestern
	$sql = "SELECT * FROM counter_stats WHERE datum = '" . (string) mysqli_real_escape_string($db, $datum) . "'";
	$result = mysqli_query($db, $sql);
	$row = mysqli_fetch_assoc($result);
	if ($row)
	{
		$besucher_gestern = $row['besucher'];
		$hits_gestern = $row['hits'];
	}
// Besucher Online
	$sql = 'SELECT COUNT(*) AS ip FROM counter_ip';
	$result = mysqli_query($db, $sql);
	$row = mysqli_fetch_assoc($result);
	if ($row)
	{
		$besucher_online = $row['ip'];
	}
// registrierte Besucher Online
	$sql = 'SELECT COUNT(*) AS ip FROM users';
	$result = mysqli_query($db, $sql);
	$row = mysqli_fetch_assoc($result);
	if ($row)
	{
		$besucher_online_reg = $row['ip'];
	}
// Besucher Gestern
	$sql = "SELECT * FROM counter_stats ORDER BY id DESC LIMIT 1"; 
	$result = mysqli_query($db, $sql);
	$row = mysqli_fetch_assoc($result);
	if ($row)
	{
		$besucher_gestern = $row['besucher'];
		$hits_gestern = $row['hits'];
	}
// Anzeigen
echo '
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/m.gif>&nbsp;<span class=text>' . $text_0428 . $datum . '</span><br>
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/m.gif>&nbsp;<span class=text>' . $text_0205 . $besucher_online_reg . ' </span><br>
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/m.gif>&nbsp;<span class=text>' . $text_0200 . $besucher_online . '  </span><br>
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/m.gif>&nbsp;<span class=text>' . $text_0201 . $besucher_heute . ' </span><br>
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/m.gif>&nbsp;<span class=text>' . $text_0369 . $besucher_gestern . ' </span><br>
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/m.gif>&nbsp;<span class=text>' . $text_0202 . $besucher_gesamt . ' </span><br>
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/m.gif>&nbsp;<span class=text>' . $text_0203 . $hits_heute . ' </span><br>
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/m.gif>&nbsp;<span class=text>' . $text_0370 . $hits_gestern . ' </span><br>
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/e.gif>&nbsp;<span class=text>' . $text_0204 . $hits_gesamt . ' </span><br>
';
?>
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Icke
Beiträge: 104
Registriert: So 20.Jun, 2021 16:15

Re: Hilfe bei einem Counterscript

Beitrag von Icke »

Hallo Oxpus,

Ja ja ist schon richtig, die Ausgabe erfolgt auch :
Ich habe die die DB nur deshalb gepostet da früher pro Tag nur 1 Eintrag erfolgt ist und der immer wieder überschrieben wird.

jetzt wird bei jedem Aufruf ein neuer Eintrag angelegt.

Gruß Ingo
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Hilfe bei einem Counterscript

Beitrag von oxpus »

In welcher Tabelle war früher nur ein Eintrag, der jetzt immer wieder neu kommt? In der counter_it oder counter_stats?
Ich hatte im meinen Tests in beiden Tabelle nur einen Datensatz (war ja auch nur mein User im Test)...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Icke
Beiträge: 104
Registriert: So 20.Jun, 2021 16:15

Re: Hilfe bei einem Counterscript

Beitrag von Icke »

Hallo Oxpus.

in der
counter_stats

schaus du:
(532, '18.01.2021', 592, 952),
(533, '19.01.2021', 512, 719),
(534, '20.01.2021', 755, 1043),
(535, '21.01.2021', 413, 662),
(536, '22.01.2021', 446, 757),
(544, '08.07.2021', 64, 190),
(545, '08.07.2021', 64, 189),
(546, '08.07.2021', 64, 188),
(547, '08.07.2021', 64, 187),
(548, '08.07.2021', 64, 178),
(549, '08.07.2021', 64, 177),
(550, '08.07.2021', 64, 176),
(551, '08.07.2021', 64, 175),
(552, '08.07.2021', 64, 174),
(553, '08.07.2021', 64, 173),
(554, '08.07.2021', 64, 172),
(555, '08.07.2021', 64, 171),
(556, '08.07.2021', 64, 170),
(557, '08.07.2021', 64, 169),
(558, '08.07.2021', 64, 168),
(559, '08.07.2021', 64, 167),
(560, '08.07.2021', 64, 166),
(561, '08.07.2021', 64, 165),
(562, '08.07.2021', 64, 164),
(563, '08.07.2021', 64, 163),
(564, '08.07.2021', 64, 162),
(565, '08.07.2021', 64, 161),
(566, '08.07.2021', 64, 160),
(567, '08.07.2021', 64, 159),
(568, '08.07.2021', 64, 158),
(569, '08.07.2021', 64, 157),
(570, '08.07.2021', 64, 156),
(571, '08.07.2021', 64, 155),
(572, '08.07.2021', 64, 154),
(573, '08.07.2021', 64, 153),
(574, '08.07.2021', 64, 152),
(575, '08.07.2021', 64, 151),
(576, '08.07.2021', 64, 150),
(577, '08.07.2021', 64, 149),
(578, '08.07.2021', 64, 148),
(579, '08.07.2021', 64, 147),
(580, '08.07.2021', 64, 146),
(581, '08.07.2021', 64, 145),
(582, '08.07.2021', 64, 144),
(583, '08.07.2021', 64, 143),
(584, '08.07.2021', 64, 142),
(585, '08.07.2021', 64, 141),
(586, '08.07.2021', 64, 140),
(587, '08.07.2021', 64, 139),
(588, '08.07.2021', 64, 138),
(589, '08.07.2021', 64, 137),
(590, '08.07.2021', 64, 136),
(591, '08.07.2021', 64, 135),
(592, '08.07.2021', 64, 134),
(593, '08.07.2021', 64, 133),
(594, '08.07.2021', 64, 132),
(595, '08.07.2021', 64, 131),
(596, '08.07.2021', 64, 130),
(597, '08.07.2021', 64, 129),
(598, '08.07.2021', 64, 128),
(599, '08.07.2021', 64, 127),
(600, '08.07.2021', 63, 125),
(601, '08.07.2021', 62, 123),
(602, '08.07.2021', 61, 121),
(603, '08.07.2021', 60, 119),
(604, '08.07.2021', 59, 117),
(605, '08.07.2021', 58, 115),
(606, '08.07.2021', 57, 113),
(607, '08.07.2021', 56, 111),
(608, '08.07.2021', 55, 109),
(609, '08.07.2021', 54, 107),
(610, '08.07.2021', 53, 105),
(611, '08.07.2021', 52, 103),
(612, '08.07.2021', 51, 101),
(613, '08.07.2021', 50, 99),
(614, '08.07.2021', 49, 97),
(615, '08.07.2021', 48, 95),
(616, '08.07.2021', 47, 93),
(617, '08.07.2021', 46, 91),
(618, '08.07.2021', 45, 89),
(619, '08.07.2021', 44, 87),
(620, '08.07.2021', 43, 85),
(621, '08.07.2021', 42, 83),
(622, '08.07.2021', 41, 81),
(623, '08.07.2021', 40, 79),
(624, '08.07.2021', 39, 77),
(625, '08.07.2021', 38, 75),
(626, '08.07.2021', 37, 73),
(627, '08.07.2021', 36, 71),
(628, '08.07.2021', 35, 69),
(629, '08.07.2021', 34, 67),
(630, '08.07.2021', 33, 65),
(631, '08.07.2021', 32, 63),
(632, '08.07.2021', 31, 61),
(633, '08.07.2021', 30, 59),
(634, '08.07.2021', 29, 57),
(635, '08.07.2021', 28, 55),
(636, '08.07.2021', 27, 53),
(637, '08.07.2021', 26, 51),
(638, '08.07.2021', 25, 49),
(639, '08.07.2021', 24, 47),
(640, '08.07.2021', 23, 45),
(641, '08.07.2021', 22, 43),
(642, '08.07.2021', 21, 41),
(643, '08.07.2021', 20, 39),
(644, '08.07.2021', 19, 37),
(645, '08.07.2021', 18, 35),
(646, '08.07.2021', 17, 33),
(647, '08.07.2021', 16, 31),
(648, '08.07.2021', 15, 29),
(649, '08.07.2021', 14, 27),
(650, '08.07.2021', 13, 25),
(651, '08.07.2021', 12, 23),
(652, '08.07.2021', 11, 21),
(653, '08.07.2021', 10, 19),
(654, '08.07.2021', 9, 17),
(655, '08.07.2021', 8, 15),
(656, '08.07.2021', 7, 13),
(657, '08.07.2021', 6, 11),
(658, '08.07.2021', 5, 9),
(659, '08.07.2021', 4, 7),
(660, '08.07.2021', 3, 5),
(661, '08.07.2021', 2, 3),
(662, '08.07.2021', 1, 1),
(663, '09.07.2021', 15, 29),
(664, '09.07.2021', 14, 27),
(665, '09.07.2021', 13, 25),
(666, '09.07.2021', 12, 23),
(667, '09.07.2021', 11, 21),
(668, '09.07.2021', 10, 19),
(669, '09.07.2021', 9, 17),
(670, '09.07.2021', 8, 15),
(671, '09.07.2021', 7, 13),
(672, '09.07.2021', 6, 11),
(673, '09.07.2021', 5, 9),
(674, '09.07.2021', 4, 7),
(675, '09.07.2021', 3, 5),
(676, '09.07.2021', 2, 3),
(677, '09.07.2021', 1, 1);

Gruß Ingo
Icke
Beiträge: 104
Registriert: So 20.Jun, 2021 16:15

Re: Hilfe bei einem Counterscript

Beitrag von Icke »

Hallo Oxpus,

im alten Script steht ja folgendes:
// Counter aktualisieren
$sql = "UPDATE counter_stats SET besucher=besucher + 1 WHERE datum=$datum";

if (mysqli_num_rows()==0)
{ sql = "INSERT INTO counter_stats (datum,besucher) VALUES ('$datum','1');"; }
Gruß Ingo
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Hilfe bei einem Counterscript

Beitrag von oxpus »

if (mysqli_num_rows()==0) ist ja auch falsch!
if (mysqli_num_rows($result)==0) wäre richtig, was voraussetzt, dass $result auch über $result = mysql_query($db, $sql); gefüllt wird.

Ich hatte auch in dem von mir veröffentlichtem Script doch schon alles korrekt.
Warum wird das nicht verwendet, sondern immer wieder die gleichen alten Fehler eingebaut?

Und noch einmal die allerletzte Aufforderung, bevor ich das Thema schließen muss:
Bitte den BBCode [ code ] verwenden, um Code aus dem Script oder der Datenbank zu posten!!
Mit [ quote ] werden die Beiträge nicht nur unwesentlich länger, sondern auch fast unlesbar und der gepostete Code deutlich schwerer zu verwenden.

Danke!!
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Icke
Beiträge: 104
Registriert: So 20.Jun, 2021 16:15

Re: Hilfe bei einem Counterscript

Beitrag von Icke »

Guten Morgen Oxpus.

ich habe dein veröff. Script schon verwand. Der letzte Code von mir war aus dem orig. Sript !!!

So und jetzt noch einmal es werden täglich nach jedem Aufruf ein neuer Eintrag angelagt.!!!

Code: Alles auswählen

(688, '09.07.2021', 3, 5),
(689, '09.07.2021', 2, 3),
(690, '09.07.2021', 1, 1),
(691, '10.07.2021', 2, 3),
(692, '10.07.2021', 1, 1),
(693, '10.07.2021', 1, 1),
(694, '10.07.2021', 1, 1),
(695, '10.07.2021', 1, 1),
(696, '10.07.2021', 1, 1),
(697, '10.07.2021', 1, 1),
(698, '10.07.2021', 1, 1),
(699, '10.07.2021', 1, 1);
Gruß Ingo
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Hilfe bei einem Counterscript

Beitrag von oxpus »

Icke hat geschrieben: Sa 10.Jul, 2021 06:45 Guten Morgen Oxpus.

ich habe dein veröff. Script schon verwand. Der letzte Code von mir war aus dem orig. Sript !!!

So und jetzt noch einmal es werden täglich nach jedem Aufruf ein neuer Eintrag angelagt.!!!
Wird von meinem Script ein neuer Eintrag angelegt oder vom Original-Script?
Bei mit legt mein Script nicht immer einen neuen Eintrag an...

Meine Version des Scripts in korrigierter Form.
Es wurde der aktuelle Tag für eine existierende IP nicht gespeichert.

Code: Alles auswählen

<?php

	include($_SERVER["DOCUMENT_ROOT"].'/kopf.php');
	include_once($_SERVER["DOCUMENT_ROOT"].'/includes/config.inc');
	include($_SERVER["DOCUMENT_ROOT"].'/includes/lang/'.$lang.'/main.inc');
	$ip = $_SERVER["REMOTE_ADDR"];
	$zeit = time();
	$datum = date("d.m.Y");
	$ablaufzeit = time() - 86400; //  IP Sperre!
//--- Alte IP-Adresse löschen -------------------------------------------
	$sql = 'DELETE * FROM counter_ip WHERE zeit <= ' . (int) $ablaufzeit;
	mysqli_query($db, $sql);
	// --- Ist die IP-Adresse schon in der DB-Tabelle
	$sql = "SELECT ip FROM counter_ip WHERE ip='" . (string) mysqli_real_escape_string($db, $ip) . "'";
	$result = mysqli_query($db, $sql);		
	$ip_exists = mysqli_num_rows($result);

	if (!$ip_exists)		
	{		
		// Nein, IP-Adresse und Timestamp eintragen	
		$sql = "INSERT INTO counter_ip (ip, zeit) VALUES ('" . (string) mysqli_real_escape_string($db, $ip) . "', " . time() . ")";
		mysqli_query($db, $sql);
	}

	// --- Ist das aktuielle Datum schon in der DB-Tabelle
	$sql = "SELECT id FROM counter_stats WHERE datum='" . (string) mysqli_real_escape_string($db, $datum) . "'";
	$result = mysqli_query($db, $sql);		
	$date_exists = mysqli_num_rows($result);

	if ($date_exists)		
	{		
		$sql = "UPDATE counter_stats SET besucher=besucher + 1, hits=hits + 1 WHERE datum='" . (string) mysqli_real_escape_string($db, $datum) . "'";
		mysqli_query($db, $sql);
	}
	else
	{
		$sql = "INSERT INTO counter_stats (besucher, hits, datum) VALUES (1, 1, '" . (string) mysqli_real_escape_string($db, $datum) . "')";
		mysqli_query($db, $sql);
	}
	
// -----------------------------------------------------------------------------------------------------------------
// Counter Daten von heute
	$sql = "SELECT besucher,hits FROM counter_stats WHERE datum = '" . (string) mysqli_real_escape_string($db, $datum) . "'";
	$result = mysqli_query($db, $sql);
	$row = mysqli_fetch_assoc($result);
	if ($row)
	{
		$besucher_heute = $row['besucher'];
		$hits_heute = $row['hits'];
	}
// Counter Daten gesamt
	$sql = 'SELECT sum(besucher) besucher, sum(hits) hits FROM counter_stats WHERE 1';
	$result = mysqli_query($db, $sql);
	$row = mysqli_fetch_assoc($result);
	if ($row)
	{
		$besucher_gesamt = $row['besucher'];
		$hits_gesamt = $row['hits'];
	}
// Hits von Gestern
	$sql = "SELECT * FROM counter_stats WHERE datum = '" . (string) mysqli_real_escape_string($db, $datum) . "'";
	$result = mysqli_query($db, $sql);
	$row = mysqli_fetch_assoc($result);
	if ($row)
	{
		$besucher_gestern = $row['besucher'];
		$hits_gestern = $row['hits'];
	}
// Besucher Online
	$sql = 'SELECT COUNT(*) AS ip FROM counter_ip';
	$result = mysqli_query($db, $sql);
	$row = mysqli_fetch_assoc($result);
	if ($row)
	{
		$besucher_online = $row['ip'];
	}
// registrierte Besucher Online
	$sql = 'SELECT COUNT(*) AS ip FROM users';
	$result = mysqli_query($db, $sql);
	$row = mysqli_fetch_assoc($result);
	if ($row)
	{
		$besucher_online_reg = $row['ip'];
	}
// Besucher Gestern
	$sql = "SELECT * FROM counter_stats ORDER BY id DESC LIMIT 1"; 
	$result = mysqli_query($db, $sql);
	$row = mysqli_fetch_assoc($result);
	if ($row)
	{
		$besucher_gestern = $row['besucher'];
		$hits_gestern = $row['hits'];
	}
// Anzeigen
echo '
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/m.gif>&nbsp;<span class=text>' . $text_0428 . $datum . '</span><br>
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/m.gif>&nbsp;<span class=text>' . $text_0205 . $besucher_online_reg . ' </span><br>
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/m.gif>&nbsp;<span class=text>' . $text_0200 . $besucher_online . '  </span><br>
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/m.gif>&nbsp;<span class=text>' . $text_0201 . $besucher_heute . ' </span><br>
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/m.gif>&nbsp;<span class=text>' . $text_0369 . $besucher_gestern . ' </span><br>
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/m.gif>&nbsp;<span class=text>' . $text_0202 . $besucher_gesamt . ' </span><br>
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/m.gif>&nbsp;<span class=text>' . $text_0203 . $hits_heute . ' </span><br>
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/m.gif>&nbsp;<span class=text>' . $text_0370 . $hits_gestern . ' </span><br>
<img src=' . $pfad . '/layout/spacer.gif><img src=' . $pfad . '/layout/navi/e.gif>&nbsp;<span class=text>' . $text_0204 . $hits_gesamt . ' </span><br>
';
?>
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Icke
Beiträge: 104
Registriert: So 20.Jun, 2021 16:15

Re: Hilfe bei einem Counterscript

Beitrag von Icke »

Hallo Oxpus,

habe das script geändert, hochgeladen und siehe erfolg.!!!

Besten Dank
Gruß Ingo
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Hilfe bei einem Counterscript

Beitrag von oxpus »

Dann hat es sich ja gelohnt.

Schön, wenn ich helfen konnte.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Antworten