• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Bekomme nur hieroglyphen

Habe jetzt mal datei zu datei1 und 2 gemacht damit verwechselungen ausgeschlossen werden können.
fget() hatte ich nur zum testen benutzt.
Habe mal hin und her versucht ,es klappt nicht .
Erst wenn ich in der erstellten txt Datei eine Zahl rein schreibe ,arbeitet das Script wie es soll.Auch mit den decoodierten url.Sieht zwar doof aus aber es geht ja .
Kann es daran liegen?Was ich aber nicht verstehen würde ,weil es ja geht wenn ich da nee Zahl rein schreibe.

Habe jezt noch mal alles rausgelöscht was unnutz ist ,auch die Echos ,aber Fehler bleibt gleich.
Vollständiges Script.
Code:
<?php

error_reporting(E_ALL);
ini_set('display_errors', true);

$site = $_POST['antwort'];
$dateiname1 = urlencode($site.'.txt');
if (file_exists(dirname(__FILE__).'/'.$dateinamen1.''))
 {
  $inhalt = fopen($dateiname1, 'r');
  $count2 = fgets($inhalt);
  $count2++;
  fclose($inhalt);
  $datei2 = fopen($dateiname1, 'w');
  fwrite($datei2, $count2);
  fclose($datei2);
}
else
{
 $count1="0";
  $datei1 = fopen($dateiname1, 'w');
  fwrite($datei1, $count1);
  fclose($datei1);
}


?>
 
Werbung:
Du hast geschrieben, dass du je Seite einen Zähler haben willst, aber was soll dann
PHP:
$site = $_POST['antwort'];
Und verwende file_get_contents und file_put_contents, das ist deutlich einfacher.
 
Werbung:
Du hast geschrieben, dass du je Seite einen Zähler haben willst, aber was soll dann
PHP:
$site = $_POST['antwort'];
Und verwende file_get_contents und file_put_contents, das ist deutlich einfacher.

Als antwort kommt die Url.

Wie soll mir file_get_contents dabei helfen?
Ich meine klar ,ich könnte alles in einer txt schreiben.
Aber ich bekomme ja noch nicht mal eine Zahl da rein ,wie soll dann das erst funktionieren?
Ich wollte eigentlich klein anfangen mit php,aber wenn so nee kleinigkeit schon nicht läuft,werde ich die lust wieder an php verlieren.
Hatte schon mehrere anläufe mit php zu lernen.Jedesmal verliere ich die Lust weil einfach nix funktionieren will.

Andere sache ,Gehen wir mal davon aus,das dieses Script laufen tut.
Wie könnte man das auf jeder Seite einbinden,damit es auch eine eindeutige Herkunft gibt.

Wenn man jetzt auf der Seite geht ,wird aus einer Html Datei mit Js ein Ajax ausgeführt,der die url ans php verschickt.


Geht das auch anders?
 
PHP:
<?php

   if (isset($_POST['antwort']))
   {
      $filename = $_POST['antwort'] . '.txt';
      
      if (file_exists($filename))
         $count = trim(file_get_contents($filename));
      else
         $count = 0;
        
      file_put_contents($filename, ++$count);
   }
   else
      file_put_contents("error.log", "Kein Parameter vorhanden");
?>
 
Das functioniert doch nur wenn ich die Datei vorher anlege,oder wie soll das gehen?
Irgendwas läuft hier schief ,es läuft nur wenn ich die Datein selber beschrifte.
 
Werbung:
Ja dann geht das auch nicht.Er erstellt nur eine error.log,die man nicht mal öffnen kann.
Ich werde php nie verstehen.
Macht man was nach Anleitung ,klappt es meistens und wenn man was ändern will geht nix. Nicht mal so was simples hier.

Error meldung
Code:
Warning: file_put_contents(http://sebastian1012.bplaced.net/php-test-ordner/besucher_und_ip_zahler/besucher-und-ip-wo gesendet-wird.php.txt) [function.file-put-contents]: failed to open stream: HTTP wrapper does not support writeable connections in /users/sebastian1012/www/php-test-ordner/besucher_und_ip_zahler/besucherzahler-alle-seiten.php on line 12
 
@m.scatello dein Script läuft jetzt ,aber nur wenn ich den txt einen namen gebe.Mit der url als Name macht er irgendwie nicht. Da kommt immer der Fehler.

Und das Script von heute mittag läuft auch noch nicht.
Naja weiter googlen ,es muß dafür ja auch noch eine erklärung geben


EDIT;

So zur Info.Dein Script geht jetzt.Der hatte wohl Probleme mit http. Schreiben geht nur bei https.
Deswegen mußte im Script kein Link sondern nur pfad angaben.
Dann habe ich die url die ich vom JS geschickt bekomme noch decodiert und jetzt läuft es.
Code:
<?php

   if (isset($_POST['antwort'])){
      $filename =  './'.$_POST['antwort'] .'.txt';
      echo '<a href="'.$ilename.'">link</a>';
      $filename = urlencode($filename);
      if (file_exists($filename)){
      $count = trim(file_get_contents($filename));
     } else{
         $count = 0;
     }
     $count++;
      file_put_contents($filename, $count);
   }
   else{
      file_put_contents("error.log", "Kein Parameter vorhanden");
   }
?>

Das muß man als anfänger erstmal wissen.
Jetzt interesiert mich nur noch der Fehler von heute mittag.Wo der ist.
Ich suche weiter
 
Zuletzt bearbeitet:
Werbung:
Das das erste Sript nicht lief.Der hat doch immer ein leeres txt erstelt.
Code:
<?php
 
error_reporting(E_ALL);
ini_set('display_errors', true);
 
$site = $_POST['antwort'];
$dateiname1 = urlencode($site.'.txt');
if (file_exists(dirname(__FILE__).'/'.$dateinamen1.''))
 {
  $inhalt = fopen($dateiname1, 'r');
  $count2 = fgets($inhalt);
  $count2++;
  fclose($inhalt);
  $datei2 = fopen($dateiname1, 'w');
  fwrite($datei2, $count2);
  fclose($datei2);
}
else
{
 $count1="0";
  $datei1 = fopen($dateiname1, 'w');
  fwrite($datei1, $count1);
  fclose($datei1);
}
 
 
?>

Habe raus gefunden das es an der if abfrage liegt.Der geht nicht in den else Zweig rein.Habe das mit mehreren echos getestet.
habe dann die Zeile
Code:
if (file_exists(dirname(__FILE__).'/'.$dateinamen1.''))

In der geändert
Code:
if (file_exists($dateinamen1))
Dann geht er in den else Zweig rein ,kommt aber nicht mehr raus.
Also meiner meinung nach kann es ja nur daran liegen.
Habe schon mal gegoogelt ,aber keine andere Lösung gefunden.

Ist ja eigentlich egal ,weil die Version von @m.scatello ja jetzt läuft,aber hätte doch gerne gewußt wie man den Fehler trotzdem beheben kann,weil muß ja was da zu lernen:)
 
Das wäre die logische Antwort - in der if-Abfrage suchst du nach einer Datei dirname(__FILE__).'/'.$dateinamen1
Im folgenden Code verwendest du aber dann durchgehend nur $dateinamen1 ... das passt nicht.
Was ich auch überhaupt nicht verstehe, wieso du dieses JS nutzt, um den Dateinamen zu ermitteln?
PHP hat das doch alles onboard!
Hab mal deinen Script etwas modifiziert...
PHP:
<?php
$filename=(basename($_SERVER['PHP_SELF'], '.php')).".txt";
//echo $filename."<br>\n";

      if (file_exists($filename))
        {
         $count = trim(file_get_contents($filename));
        }
      else
        {
         $count = 0;
        }
     $count++;
     file_put_contents($filename, $count);
?>
Der sollte sich problemlos mit 'include' in jede PHP Datei einfügen lassen und würde jeden Aufruf dieser Datei in der gleichnamigen .txt Datei protokollieren.
 
Werbung:
Aber jetzt mal ehrlich, für jede Seite eine eigene Textdatei anlegen ist doch krank!
 
@Sailor ,werde dein Code gleich mal testen.

Aber jetzt mal ehrlich, für jede Seite eine eigene Textdatei anlegen ist doch krank!
Das stimmt schon.Wenn das erstmal klappt ,ist das Ziel das alle Ergebnisse in einer Datei ( Zb html ) Ausgegeben wird,und an besten in Tabellenform ,wo Seite ,Besucher und vieleicht noch Tages und Wochen Zähler angegeben werden.

Optionall soll es auch möglich sein ,mit wennig Code auf jeder Seite die aktuelle Ausgabe der Zählung anzeigen zu lassen( Soll nur möglich sein,gebraucht wird es nur auf wennigen Seiten ).

Aber soweit bin ich noch nicht:(
Aber danke an euch beiden für eure hilfe. Meistens ist Personliche hilfe doch besser als goggle
 
Werbung:
er will PHP lernen und das kann man ja nur unterstützen - oder?
Ja klar, aber warum dann nicht gleich auf den richtigen Weg bringen. Ich rede ja jetzt noch nicht mal von einer Datenbank, sondern eine Textdatei ist ja erst mal ok. Aber dann eine für alle Seiten, soviel größer ist der Aufwand dabei nicht.
 
So das läuft jetzt schon mal.Ohne Fehler JUHU.
Ich komme aber mit den Simikolions und Hochkommas noch durcheinander.
Wann muß man bei einer Variable die Punkte und Simikolions setzen zb so.
Code:
'.$Variable.'
oder so
Code:
$Variable;
oder so
Code:
$Variable
Wie ist das mit den einzel und doppel Hochkommas.
Kann man sich das aussuchen ob man so
Code:
echo "hallo '.$variable.' Welt";

oder so  macht

echo 'hallo ".$variable."Welt";

Ist es normal ,wenn man hinter dem echo ein Semikolon vergisst das gleich ein error kommt ?
Javascript ist bei diesen Sachen hier nicht so empfindlich.


So dann nächste Aufgabe. Wie bekomme ich alle Besucher Werte in 1 Script ?
Wonach muß ich da suchen?
Ich will das erstmal alleine versuchen und heute abend zeige ich euch dann wie es nicht geht:(
 
Werbung:
Arbeite bitte einige Grundlagentutorials durch, davon gibt es einige im Netz, auch in Deutsch. Ein Forum ist nämlich nicht dafür da Grundlagenn zu vermitteln.

Überlege dir, wie du die Daten in eine Daten schreiben willst. Relativ einfach wäre, wenn du für jede Seite eine Zeile nimmst, die ungefähr so aussehen könnte

seite1, 30
seite2, 20
seite3, 15
etc.

Die Datei liest du dann mit file ein, durchläufst das Array in einer Schleife, trennst jede Zeile mit explode und vergleichst dann die Werte.
 
Zurück
Oben