Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] Counter erhöhen (https://www.delphipraxis.net/126932-%5Bphp%5D-counter-erhoehen.html)

Larsi 5. Jan 2009 10:07


[PHP] Counter erhöhen
 
Hi,

in mein neustes Programm soll auch ein Online Update rein. Da ich bei meinem Password Saver zum Beispiel keine Ahnung habe ob den irgendjemand nutzt habe ich mir gedacht man könnte vielleicht auf meinem Server einfach nur eine Datei mit einer Zahl drinnen erstellen, die immer wenn jemand updatet um eins erhöht wird. Technisch ist das sicherlich möglich aber ich weiß leider nicht wie. Ich habe mich ein bisschen erkundigt und habe herausgefunden, dass man z.B. mit TIdHttp1 von den Indys per Post Funktion das machen kann. In Delphi müsste ja dann irgendwie der Php Datei gesagt werden, dass die Php Datei einen Counter um eins erhöhen soll. Da ich mich noch nie mit Php beschäftigt habe mir aber dennoch diese Funktion wichtig ist, bin ich auf euch angewiesen. Per Ftp Upload wäre das ganze zwar prinzipiell auch möglich aber dann könnte ja jeder mit seinen Sniffer das Passwort und den Username von meinem FTP Server auslesen, und das will ich nicht :mrgreen: .

Ich bitte euch wenn Ihr mir nicht helfen wollt, sondern wieder Kritik über mich verbreiten woll, die nicht in diesem Post zu tun, da das der Übersichtlickeit nicht gut tut. :?

MFG Lars Wiltfang

fkerber 5. Jan 2009 10:09

Re: [PHP] Counter erhöhen
 
Hi!

Im Prinzip wäre es am einfachsten, wenn die PHP-Datei die ganze Arbeit macht (sprich Einlesen der Zahl, erhöhen, wieder abspeichern) und du diese PHP-Datei dann z.B. mit den Indys einfach nur kurz aufrufen musst.

Ist dein Webspace php-fähig?


Ciao, Frederic

Larsi 5. Jan 2009 10:12

Re: [PHP] Counter erhöhen
 
Genau so habe ich mir das vorgestellt. :thumb:

Ja, ist er. :)

fkerber 5. Jan 2009 10:13

Re: [PHP] Counter erhöhen
 
Hi!

Hast du dann noch eine konkrete Frage?


Ciao, Frederic

Larsi 5. Jan 2009 10:17

Re: [PHP] Counter erhöhen
 
Ja, ich habe mich noch nie mit Php beschäftigt und falls sich hier zufällig damit auskennt wäre es freundlich mir zu erklären wie ich das angehen muss. Ich halte es für übertrieben jetzt ein Gesamtes Einsteigertutrial durchzulesen, da mein konkrektes Beipsiel da wohl auch nicht beantwortet wird und ich keine Zeit habe mir sowas ganz durchzulesen.

Luckie 5. Jan 2009 10:22

Re: [PHP] Counter erhöhen
 
Funktioniert genauso, wie auf Dateien basierende Seitenaufrufszähler mit PHP. Dazu sollte es genug Besipiele im Internet geben.

DeddyH 5. Jan 2009 10:23

Re: [PHP] Counter erhöhen
 
Etwas oversized, aber hier ein Beispiel: http://www.webmaster-resource.de/tri...grammieren.php

Matze 5. Jan 2009 10:31

Re: [PHP] Counter erhöhen
 
Hallo,

ich würde die Zahl an deiner Stelle in einer Textdatei speichern (per FTP anlegen und ChMod auf 777 setzen). Eine Datenbank wäre etwas übertrieben und da kann man sich leicht Sicherheitslücken einbauen.

Die PHP könnte grob so aussehen:

Code:
<?php

define('MY_FILE', 'counter.txt');

$counter = 1;

if (file_exists(MY_FILE))
{
    $file_handle = fopen(MY_FILE, 'r');
    $counter = fgets($file_handle);
    fclose($file_handle);

    $counter = (!empty($counter)) ? $counter + 1 : 1;  
}

$file_handle = fopen(MY_FILE, 'w');
fputs($file_handle, $counter);
fclose($file_handle);

// evtl. eine Ausgabe für dich zur Kontrolle:
echo 'Wert: ' . $counter;

?>
Nur so aus dem Kopf hingetippselt. Der Aufruf der Datei erhöht dann den Counter. Ein POST-/GET-Parameter muss nicht übergeben werden.

Grüße, Matze

Larsi 5. Jan 2009 10:40

Re: [PHP] Counter erhöhen
 
Ich habe es jetzt selber hinbekommen aber trotzdem danke, Matze und die anderen. Also in meiner Variante wird einfach nur eine Zeile hinzugefügt in die Textdatei. Wie rufe ich denn jetzt die Php Datei auf? Mit Idhttp1.Post oder geht das anders?

Matze 5. Jan 2009 10:42

Re: [PHP] Counter erhöhen
 
Dann zeige uns doch mal deine funktionierende Lösung, damit andere auch eine haben, die sie anwenden können.
Meins war ja nur aus dem Kopf und kann ohne weiteres Fehler enthalten.

Grüße, Matze

Edit: Du kannst sie per Post() oder Get() aufrufen, wenn du keine Parameter auswertest. Aber ich kenne deine PHP-Datei nicht, zeige sie mal bitte.

Larsi 5. Jan 2009 10:45

Re: [PHP] Counter erhöhen
 
Code:
<? 
 $fp=fopen("diedatei.txt","a+");

fwrite($fp,$_SERVER['REMOTE_ADDR']."\n");
 fclose($fp);
?>
Damit nicht so viele doppelte Einträge sind speicher ich einfach die Ip. In Delphi werde ich dann die Anzahl auswerten und die Datei automatisch jeden Tag leeren lassen.

Edit: Und ich habe die Lösung nicht einfach aus irgendeiner Website kopiert sondern sebler erarbeitet.

DeddyH 5. Jan 2009 10:48

Re: [PHP] Counter erhöhen
 
Wieso schreibst Du nicht einfach die Zahl rein? So bliebe die Datei schön klein.

Larsi 5. Jan 2009 10:49

Re: [PHP] Counter erhöhen
 
Das mit dem "einfachen" Post kriege ich irgendwie nicht richtig hin. Idhttp erwartet ja noch weitere Paramter aber ich will ja einfach nur die Datei aufrufen.

Delphi-Quellcode:
IdHttp1.post('http://wiltfang.wi.funpic.de/meinipskript.php');

klappt nicht.

DeddyH 5. Jan 2009 10:51

Re: [PHP] Counter erhöhen
 
Ich habe keine Indys installiert, aber statt Post sollte Get doch klappen, wenn ich nicht irre (das Script muss ja nur aufgerufen werden).

Matze 5. Jan 2009 10:51

Re: [PHP] Counter erhöhen
 
Es können auch mehrere Leute mit der gleichen externen IP unterwegs sein. Also dafür die IP zu speichern ist in meinen Augen großer Quatsch.
Wie Detlef schrieb: Speicher die Zahl und gut ist. Die könntest du mit Delphi und Get() auch leicht und schnell auslesen, falls du das willst.

Edit: Post() erwartet mind. einen 2. Parameter, soweit ich weiß. Doch das müsste dir doch Delphi mitteilen. :roll: Get() reicht für das Skript vollkommen aus.

Luckie 5. Jan 2009 10:54

Re: [PHP] Counter erhöhen
 
Du gehörst wahrscheinlich auch zu den Leuten, die sich einen zweiten Monitor kaufen, wenn man auf dem ersten vor lauter Postit Zetteln, das Bild nicht mehr sehen kann oder? Aber gut, deine Lösung funktioniert natürlich auch, nur brauchst du jetzt ein zweites Programm oder Skript, welches dir die Anzahl der zeilen anzeigen kann, wenn du wissen willst, wie viele Leute dein Programm benutzen.

Also ich würde es auch für sinnvoller halten die Zahl in die Datei zu schreiben. Wie as geht, hat die Matze gezeigt.

Und zum Erhöhen reicht einfaches aufrufen der Datei. Probier es im Browser aus.

Larsi 5. Jan 2009 11:00

Re: [PHP] Counter erhöhen
 
Ok, jetzt geht alles. Hat sich geklärt.

Luckie 5. Jan 2009 11:02

Re: [PHP] Counter erhöhen
 
Wenn du das Skript von Matze nutzt, kannst du sie einfach löschen. Sie wird neu erstellt, wenn sie nicht vorhanden ist.

Valle 5. Jan 2009 11:17

Re: [PHP] Counter erhöhen
 
Zitat:

Zitat von Matze
per FTP anlegen und ChMod auf 777 setzen

Warum das denn bitte? Warum denn gleich 777? Wie wäre es mit was passenderem, wie z.B. 640, oder von mir aus auch 660. Oder am besten gleich default lassen. Aber 777 halte ich für Unsinn. Das kann bei einigen Hostern Probleme machen. Und außerdem sollte mittlerweile jeder Hoster so weit sein, dass es auch ohne volle Rechte funktioniert.

Zitat:

Zitat von Matze
Die PHP könnte grob so aussehen:

Code:
<?php

define('MY_FILE', 'counter.txt');

$counter = 1;

if (file_exists(MY_FILE))
{
    $file_handle = fopen(MY_FILE, 'r');
    $counter = fgets($file_handle);
    fclose($file_handle);

    $counter = (!empty($counter)) ? $counter + 1 : 1;  
}

$file_handle = fopen(MY_FILE, 'w');
fputs($file_handle, $counter);
fclose($file_handle);

// evtl. eine Ausgabe für dich zur Kontrolle:
echo 'Wert: ' . $counter;

?>

Code:
file_put_contents("counter.txt", intval(file_get_contents("counter.txt"))+1);
SCNR :mrgreen:

Mit freundlichen Grüßen,

Valle

Matze 5. Jan 2009 11:21

Re: [PHP] Counter erhöhen
 
Hi Valle,

ich habe schon Ewigkeiten nichts mit Textdateien gemacht. Bei einem früheren Hoster (vor 3 Jahren vllt.) hat es bei mir nur mit 777 funktioniert und meine bisherigen Hoster haben das alle unterstützt.

Deine Kurzlösung ist natürlich fein, aber wie gesagt, da ich nie damit arbeite kann das schonmal eine umfangreichere Lösung werden. :mrgreen: Funktionieren tut sie, aber deine ist natürlich eleganter.

Grüße

Larsi 5. Jan 2009 11:23

Re: [PHP] Counter erhöhen
 
Wie is denn das rechtlich gesehen? Darf ich das jetzt teroretisch einfach in das Programm beim Update mit Reinpacken oder muss man da per Lizenzvertrag o.ä. zustimmen?

Valle 5. Jan 2009 11:25

Re: [PHP] Counter erhöhen
 
Zitat:

Zitat von Matze
ich habe schon Ewigkeiten nichts mit Textdateien gemacht. Bei einem früheren Hoster (vor 3 Jahren vllt.) hat es bei mir nur mit 777 funktioniert und meine bisherigen Hoster haben das alle unterstützt.

Hui... Ok. Also wenn das so ist. Das ist natürlich technisch unterstes Niveau, aber wenn's nicht anders geht, ok. Verrätst du uns / mir, welcher Hoster das war? :angel:

Zitat:

Zitat von Matze
Deine Kurzlösung ist natürlich fein, aber wie gesagt, da ich nie damit arbeite kann das schonmal eine umfangreichere Lösung werden. :mrgreen: Funktionieren tut sie, aber deine ist natürlich eleganter.

Also ich finde deine Eleganter, da sie eine Konstante definiert, auch unter PHP4 funktioniert und auch schon ein wenig Fehlerbehandlung eingebaut hat. Aber ich finde es immer wieder lustig, wie man 20 Zeilen in eine packen kann. :spin2:

Mit freundlichen Grüßen,

Valle

Matze 5. Jan 2009 11:25

Re: [PHP] Counter erhöhen
 
Zitat:

Zitat von Larsi
Wie is denn das rechtlich gesehen? Darf ich das jetzt teroretisch einfach in das Programm beim Update mit Reinpacken oder muss man da per Lizenzvertrag o.ä. zustimmen?

Was meinst du? Wo willst du dein Programm hineinpacken und wieso fürchtest du rechtliche Schwierigkeiten?

Edit: @valle: Puh irgendein Freehoster war das noch, aber da hatte ich zu viele hinter mir. Shellmaster vielleicht, aber ich weiß es nicht mehr

Larsi 5. Jan 2009 11:29

Re: [PHP] Counter erhöhen
 
Also die Datenspeicherung ist ja ein sehr sensibles Thema. Darf ich unbemerkt während der Update Prozedur bspw. meines Password Savers die Ip speichern oder muss da zugestimmt werden. Die Ip wird ja nicht dauerhaft gespeichert sondern auch wieder gelöscht sobald ich "gezählt" habe in meinem Delphi Programm.

Matze 5. Jan 2009 11:30

Re: [PHP] Counter erhöhen
 
Lass die IP einfach weg, die brauchst du nicht. Nutze einen normalen Counter, dafür wurden 2 Lösungen genannt.

Was willst du denn unbedingt die IP speichern, das ist doch totaler Unsinn.

Valle 5. Jan 2009 11:32

Re: [PHP] Counter erhöhen
 
Zitat:

Zitat von Matze
Edit: @valle: Puh irgendein Freehoster war das noch, aber da hatte ich zu viele hinter mir. Shellmaster vielleicht, aber ich weiß es nicht mehr

Freehoster erklärt alles. :mrgreen:

@Larsi: Warum willst du die IP denn speichern? Denke doch mal genau darüber nach. Du machst dir mehr Arbeit als nötig und gewinnst nichts daraus. Eine IP-Sperre ist sinnlos und verfälscht deinen Download-Counter nur. Setze lieber einen Cookie für 2h, der ein erneutes Zählen verhindert, das macht es wesentlich realistischer. Aber eine IP wirst du niemals brauchen...

Mit freundlichen Grüßen,

Valle

Matze 5. Jan 2009 11:36

Re: [PHP] Counter erhöhen
 
Ein beispiel zu diesem IP-Quatsch, vielleicht versteht Larsi dann, dass es Unsinn ist:

Wir haben hier im Haushalt 4 Computer, die über einen Router mit dem Internet verbunden sind. Der Router wählt sich ins Internet ein und erhält somit eine einzige externe IP. Intern werden natürlich verschiedene vergeben.

Jeder PC, der sich nun ins Internet verbindet ist dort mit exakt der gleichen IP unterwegs. Wenn die 4 PCs nun dein Update herunterladen würden, stünden 4 identische IPs in deinem Log, obwohl es 4 verschiedene PCs/Benutzer waren.

mkinzler 5. Jan 2009 11:42

Re: [PHP] Counter erhöhen
 
Und die Internetprovider arbeiten auch nach diesem Schema, wenn ein Kunde sich abmeldet, wird die IP nach einer bestimmten Zeit wieder freigegeben und dann dem nächsten Kunden zugewiesen.

Larsi 5. Jan 2009 11:45

Re: [PHP] Counter erhöhen
 
Ich habe ja nur gefragt ob das ganze erlaubt ist und nicht ob es Sinn macht.

Valle 5. Jan 2009 11:50

Re: [PHP] Counter erhöhen
 
Zitat:

Zitat von Larsi
Ich habe ja nur gefragt ob das ganze erlaubt ist und nicht ob es Sinn macht.

Red' dich doch nicht raus. :mrgreen:

Mit freundlichen Grüßen,

Valle

Matze 5. Jan 2009 12:10

Re: [PHP] Counter erhöhen
 
Bevor du dir unsicher bist und dich in rechtliche Schwierigkeiten begibst lass doch den Blödsinn weg und freu dich, dass du eine 100% erlaubte Lösung hast, die zudem wenig Traffic erzeugt, wenig Webspace verbraucht, performant und kinderleicht auszulesen ist.

Oder bist du IP-Sammler? Dann kann ich dir auch einen IP-Generator schreiben ...

Larsi 5. Jan 2009 12:30

Re: [PHP] Counter erhöhen
 
Gibt es einen mutigen unter euch, der das ganze mal testet? Ich verspreche euch hiermit das eure Ip sofort wieder lösche und nichts damit anstell. Im Anhang ist eine Exe, die einfach nur das mit dem Idhhtp1.get aufruft in Verbindung mit dem Ip Skript.

Larsi 5. Jan 2009 12:35

Re: [PHP] Counter erhöhen
 
Es geht.

Habe die Ips schong gelöscht.

Matze 5. Jan 2009 12:49

Re: [PHP] Counter erhöhen
 
Dass du so unvernünftig bist, kann ich nicht nachvollziehen. Was nun, wenn es rechtlich verboten ist und das rauskommt?

Aber gut, dass ist deine Sache.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz