PHP Besucherzähler

Hallo,
ich bin noch ein richtiger PHP Neuling und habe nen doofen Fehler.
Mein Code:

<? $datei_name = "counter.txt"; if (!file_exists($datei_name)) { $dz = fopen($datei_name, "w"); fclose($dz); } $dz = fopen($datei_name,"r"); $counter = fread($dz, 10); fclose($dz) $counter++; $dz = fopen($datei_name, "w"); fwrite($dz, $counter); fclose($dz); ?>

Fehler:
Parse error: syntax error, unexpected T_VARIABLE in /users/davidosbaukasten/www/index.php on line 23

Danke im vorraus.

hi,

kannst du uns ggf. den ganzen code posten weil des sind nur ca. 13 zeilen und keine 23 :wink:

Der Fehler könnte aber u.a. ein vergessenes Semikolon ( ; ) sein

<? $datei_name = "counter.txt"; if (!file_exists($datei_name)) { $dz = fopen($datei_name, "w"); fclose($dz); } $dz = fopen($datei_name,"r"); $counter = fread($dz, 10); fclose($dz); $counter++; $dz = fopen($datei_name, "w"); fwrite($dz, $counter); fclose($dz); ?>
^^versuch des mal
lg flo

Wow danke hat funktioniert :slight_smile:

Hi,

bitte immer wieder gerne. Wie gesagt lag nur an dem einen Semikolon ( ; )

lg floo

Und neue Probleme :slight_smile:

Also.
Ich wollte Cookies einbauen damit es ein “richtiger” Besucherzähler wird und man nicht einfach neuladen kann und ein neuer Besucher ist hinzugefügt wurden.(Hoff mal einer versteht was ich meine^^)
Allerdings war das irgendwie fail…Es fügt jetzt 2 neue Besucher zu und man kann trotzdem neuladen und der Counter wird erhöht…

[code]m

Davidos Baukasten <? $wochentag = date(l); $datum = date("d. F Y"); $uhrzeit = date("H:i"); echo "Heute ist $wochentag, der $datum.
"; echo "Es ist jetzt $uhrzeit Uhr."; ?> <? $datei_name = "counter.txt"; if (!file_exists($datei_name)) { $dz = fopen($datei_name, "w"); fclose($dz); } $dz = fopen($datei_name,"r"); $counter = fread($dz, 10); fclose($dz); $counter++; $dz = fopen($datei_name, "w"); fwrite($dz, $counter); fclose($dz); $besucher = $_COOKIE['besucher']; if (!isset($besucher)) { setcookie ("besucher","ja"); $counter++; $dz = fopen($datei_name, "w"); fwrite($dz, $counter); fclose($dz); } ?>

Hallo ;)

Ich bin Davido.Ich bin ein totaler HTML und PHP neuling will aber beides schnell lernen.

Ich würde gerne ein kleines Forum aufbauen und sowas.Dann kaufe ich mir auch eine Domain und Webspace.

So lange ich aber noch lerne bleibe ich bei bplaced :)

Möp :D

Diese Seite wurde jetzt zum <?=$counter;?>. Mal aufgerufen !

[/code]

Hier der ganze Quellecode.
Außerdem bekomm ich noch ne Fehlermeldung

Warning: Cannot modify header information - headers already sent by (output started at /users/davidosbaukasten/www/index.php:7) in /users/davidosbaukasten/www/index.php on line 29

Danke im vorraus ^^

edit: ah ok hab 2x counter++ geschrieben…Deshalb hat der 2x den Counter erhöht.Aber trotzdem funktioniert das mit den Cookies nicht…

http://www.php-fehlermeldungen.de/topic24.html

Hmm…Danke … Werde daraus aber nicht wirklich schlau…
Sorry beschäftige mich erst seid heute mit PHP :frowning:

Es darf keine Ausgabe vor den header-Informationen gemacht werden.

Edit: Das betrifft nicht nur header() sondern auch wie in deinem Fall das Setzen von cookies.

Ah ok dankeschön…Versteh es zwar aber weiß nicht so wirklich wie ich das jetzt beheben kann :frowning:

den counter vor den anfang des html documents setzen

Super hat funktioniert danke.Jetzt funktionieren sogar die Cookies :slight_smile:

Und neuer Fehler…PHP bringt mich echt zum verzweifeln :smiley:

[code]<?
$fehler ="";
$nz = chr(13).chr(10);
$name = $_POST[‚name‘];
$adresse = $_POST[‚adresse‘];
$nachricht = $_POST[‚nachricht‘];
if (empty($name)) $fehler .= „

  • Der Absendername fehlt
  • “;
    if (empty($adresse)) $fehler .= „
  • Die eMailadresse fehlt
  • “;
    if (empty($nachricht)) $fehler .= „
  • Keine Nachricht eingetragen
  • “;
    if (empty($fehler)) {
    $an = "privat@hotmail.de";
    $betreff = „Nachricht via Kontaktformular“;
    $from = "From : Kontaktformular privat@hotmail.de;
    $datum = "Datum: „.date(„j.n.Y“).$nz;
    $zeit = „Zeit: „.date(„H:i“).$nz;
    $von = „Von: „.$name.“ <.$adresse.“>“.$nz;
    $linie =“-----------------------“.$nz;
    $text = $datum.$zeit.$von.$line.$nachricht.;
    $titel = „Ihre Nachricht wurde versandt“;
    mail ($an,$betreff,$text,$from);
    } else $titel = „Es ist ein Fehler aufgetreten“;
    ?> <?=$titel=> <? if (empty($fehler)) { $text = strip_tags($text); $text = htmlentites ($text); $text = str_replace($nz,"
    ",$text); echo "

    Ihre Nachricht wurde verschickt.

    "; } else { echo "

    Ihre Nachricht konnte nicht versandt werden weil"; echo "

      $fehler
    "; echo ""; } ?> [/code]

    Mal wieder der liebe Fehler:
    Parse error: syntax error, unexpected T_STRING in /users/davidosbaukasten/www/auswertung.php on line 14

    Trotz 100x nachsehen ob ein ; fehlt hab ichs nicht verbesssern können !haue

    Danke im vorraus…

    was für einen editor verwendest du?

    ich würde dir mal zumindest notepad++ empfehlen, iwas mit syntax-hervorhebung jedenfalls. es hätte ungefähr 20 ms in anspruch genommen bis du festgestellt hättest, dass du den string in der vorzeile nicht geschlossen hast.

    mfg

    HTML Editor Phase 5.6 ^^
    Lad mir den mal runter.

    Hmm naja so sonderlich springt mir dass nicht ins Auge dass ich den String nicht geschlossen hab^^
    Hab den Fehler gefunden und bekomm gleich wieder einen Fehler :slight_smile:

    Parse error: syntax error, unexpected T_DEC in /users/davidosbaukasten/www/auswertung.php on line 17

    jetzt bemüh dich doch bitte selber mal ein wenig.

    $von = “Von: “.$name.” <".$adresse.”>".$nz;

    auch hier hast du schon wieder den string nicht geschlossen.

    Ok tut mir leid…:frowning:

    Und nochmal: Notepad++ (oder ähnliches mit Syntaxhighlightning) und ein bisschen Struktur (Einrückung und Leerzeilen) lassen machen das Programmieren viel übersichtlicher und damit die Wartung einfacher.

    Bei Notepad++ sieht man noch deutlicher, dass da was nicht stimmt.

    (Und verzichte besser auf shorttags (<?) und verwende <?php, denn die shorttags können woanders auch deaktiviert sein.)

    Ok vielen dank benutze dann ab jetzt Notepad++ :slight_smile:
    Hab dann noch kleine Fehler korrigiert und mein Code sieht jetzt so aus :

    [code]<?php
    $fehler ="";
    $nz = chr(13).chr(10);
    $name = $_POST[‚name‘];
    $adresse = $_POST[‚adresse‘];
    $nachricht = $_POST[‚nachricht‘];

    if (empty($name))
    $fehler .= „

  • Der Absendername fehlt
  • “;
    if (empty($adresse))
    $fehler .= „
  • Die eMailadresse fehlt
  • “;
    if (empty($nachricht))
    $fehler .= „
  • Keine Nachricht eingetragen
  • “;
    if (empty($fehler))
    {
    $an = "privat@hotmail.de";
    $betreff = „Nachricht via Kontaktformular“;
    $from = „From: Kontaktformular privat@hotmail.de“;
    $datum = „Datum: „.date(„j.n.Y“).$nz;
    $zeit = „Zeit: „.date(„H:i“).$nz;
    $von = „Von: „.$name.“ <“.$adresse.“>“.$nz;
    $linie =“-----------------------“.$nz;
    $text = $datum.$zeit.$von.$line.$nachricht;
    $titel = „Ihre Nachricht wurde versandt“;
    mail ($an,$betreff,$text,$from);
    }
    else
    $titel = „Es ist ein Fehler aufgetreten“;
    ?> <?=$titel?> <?php if (empty($fehler)) { $text = strip_tags($text); $text = htmlentites ($text); $text = str_replace($nz,"
    ",$text); echo "

    Ihre Nachricht wurde verschickt.

    "; } else { echo "

    Ihre Nachricht konnte nicht versandt werden weil"; echo "

      $fehler
    "; echo ""; } ?> [/code]

    Und jetzt bekomme ich die Fehlermeldung:

    Ihre Nachricht konnte nicht versandt werden weil
    Die eMailadresse fehlt

    !haue

    Hab wirklich den ganzen Code nach Fehlern untersucht und hab wirklich nichts gefunden…
    So langsam glaube ich PHP ist nichts für mich :frowning:

    ja dann wird halt die $_POST[‘adresse’]-variable leer sein.
    sicher dass du beim absenden den tag richtig geschrieben und befüllt hast? name=“adresse” in deinem fall…