automatisch eine Datei erstellen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
arbeiten
beispiel
code
dank
datei
erstellen
formular
forum
frage
grundlage
http
inhalt
lernen
nutzer
parameter
problem
punkt
url
versuch
zahl
-
Hi,
als erstes natürlich allen einen schönen 2ten Advent. An die, die vielleicht nicht am Kaffetisch sitzen, habe ich da mal eine Frage. Mir fehlt da mal wieder jeglicher Ansatz und ich weiß nicht ob das überhaupt irgendwie geht. Ich versuch es mal zu schildern.
Es geht darum eine Datei zu erstellen die durch einen cronjob aufgerufen wird und Daten in einer DB abspeichert. Soweit noch kein Problem, nun geht es darum das der Nutzer am besten seine eigene Datei erstellen kann.
Schritt 1
Der Nutzer gibt eine bestimmte ID an, die dann in der DB gespeichert wird.
Schritt 2
Durch einen Cronjob wird eine Datei aufgerufen die auf die DB zugreift und durch die ID einen Punktewert ermittelt, dieser soll dann ebenfalls in der DB gespeichert werden. Dadurch soll am Ende ein Punkteverlauf aufgezeichnet werden.
Nun ist aber das Problem dass es Unmengen an ID gibt und jeder Nutzer seinen eigenen Link für seinen Cronejob benötigt. Die Datei für den Cronejob sieht ja bis auf die ID immer gleich aus, gibt es eine Möglichkeit dass diese Datei durch den Nutzer beim Speichern der ID erstellt wird und er einen Link dazu bekommt?
Ich hoffe man versteht irgendwie was ich meine, erklärt sich nicht so gut, in meinem Kopf klingt es aber gut.
LG Marco
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Nein, ich habe keinen blassen Schimmer, was Du erreichen willst.
Versuch noch einmal zu erklären, was die einzelnen Schritte sind. -
Hast du in die Suchmaschine deiner Wahl schon einmal "php datei schreiben" eingegeben?
Denn da müsste als eines der ersten Ergebnisse diese Seite kommen:
http://php.net/manual/de/function.fwrite.php -
Ok ich Versuchs noch mal.
Wir haben eine DB-Tabelle die unter anderen eine ID, einen Namen, und Punkte speichert.
Zusätzlich haben wir eine PHP Datei, nennen wir sie mal cronjob.php. Diese Datei liest beim aufrufen über die ID, die auch in der DB hinterlegt ist, Daten aus einer XML Datei aus und speichert diese dann in der DB-Tabelle unter der ID.
Ruft man die cronjob.php nun über einen cronjob alle 15 min auf, soll immer der neue Punktestand mit in die DB eingetragen werden. Die Spalte Punkte soll dabei erweitert werden.
Nutzer (A)
Gibt über ein Formular die gewünschte ID (zb. 2390)ein und speichert diese in der DB.
Nun benötigt Nutzer (A) einen Link ../ cronjob.php, in dieser muss nun auch seine gewünschte ID (2390) als Variable hinterlegt sein.
Sein Link könnte also ../cronjob_2390.php lauten
Nutzer (B)
Gibt ebenfalls über das Formular eine ID (4080) an und speichert diese.
Natürlich braucht auch Nutzer (B) seinen Link. Dieser könnte nun ../cronjob_4080.php lauten. Hier muss nun aber als ID eben die 4080 in einer Variablen.
Die benötigte cronjob_xxx.php müsste automatisch erstellt werden wenn der Nutzer seine erste ID über das Formular an die DB sendet. Dabei sieht der Code der Datei immer gleich aus bis auf die Variable „ID“
Konnte man das besser verstehen? Hab mir Mühe gegeben!
Die aufgezeichneten Punkte sollen am Ende als Diagramm zum Bsp. Ausgegeben werden und nach bestimmten Punktesprüngen suchen.
Aber erst mal ist die Frage ob ein Nutzer eine Datei selber erstellen kann.
LG
Tante EDIT:
@hm4-blog schau ich mir mal an, habe ich noch nicht gesehen. Wusste nicht mal wonach ich richtig suchen muss.
damit griefe ich aber auf eine bestehende datei zu oder? das möchte ich ja nicht, die datei ist ja quasi noch nicht existent bevor der nutzer sie erstellt
Beitrag zuletzt geändert: 9.12.2012 18:48:54 von aff3m1tw4ff3 -
Du könntest die ID auf Variabel halten mittels GET Variable: cronjob.php?id=2390 oder cronjob.php?id=4080 . Dann hast du nur ein Script, aber den gleichen Effekt von vielen.
Liebe Grüße -
@fwrite: Damit kann man Dateien ändern oder erstellen. Zuerst erzeugst du den Datei-Handle mit fopen(), schreibst den Inhalt mit fwrite(), und schließt die Datei mit fclose().
Bsp.:
<?php $datei = fopen('Datei1.php'); fwrite($datei, 'Hier ist der Inhalt'); fclose($datei); ?>
-
hm4-blog schrieb:
@fwrite: Damit kann man Dateien ändern oder erstellen. Zuerst erzeugst du den Datei-Handle mit fopen(), schreibst den Inhalt mit fwrite(), und schließt die Datei mit fclose().
Dann kann man der Einfachheit halber auch file_put_contents() benutzen http://php.net/manual/de/function.file-put-contents.php
Damit geht das ein wenig übersichtlicher und leichter. Trotz allem würde ich die GET Variante bevorzugen. Ist Wartungsfreundlicher.
Liebe Grüße -
Du solltest dein Konzept überdenken. Es ist Blödsinn alles was du hast nochmal zu machen, damit jeder Nutzer seine eigene Datei hat. Benutze Sessions oder übergib ein Variable mit dem Session- Namen des Benutzers an die cronjob.php. Dort holst du dann dynamisch je nach Benutzer die passenden Werte. Es macht einfach keinen Sinn 100 Dateien anzulegen, wenn alles was du brauchst schon vorhanden ist?!?
-
kill-a-teddy schrieb:
Du solltest dein Konzept überdenken. Es ist Blödsinn alles was du hast nochmal zu machen
Genau darum habe ich, bevor ich anfange hier gepostet. Ich habe nur die Idee im Kopf und suche nun nach der besten Lösung. Ich wusste ja das ich hier ein paar hilfreiche Tips bekomme :)
Wenn ich das richtig verstehe geht dein Vorschlag ja in die gleiche Richtung wie der hier:
ggamee schrieb:
Du könntest die ID auf Variabel halten mittels GET Variable: cronjob.php?id=2390 oder cronjob.php?id=4080 . Dann hast du nur ein Script, aber den gleichen Effekt von vielen.
Hier habe ich das Problem das ich Variablen noch nie so mit einem Link übergeben habe.
Kann ich an den jeweiligen Link nun einfach die jeweilige ID
hinten an den Link anhängen??id=4080
Wenn ich das richtig sehe, dann sucht die Datei cronjob?xyz.php, dann immer im eigenen Link nach der Variable
und verarbeitet diese!?!?id=4080
Vieleicht hat jemand einen Link für mich zu dem Thema.
Werde mich jetzt auch mal durch Google suchen und schauen was ich so finde.
Ich danke Euch wie immer für die Hilfreichen Ansätze bis hier, ich finds super
das hier so viel Resonanz kommt! Top!
Beitrag zuletzt geändert: 10.12.2012 10:59:28 von aff3m1tw4ff3 -
Ich glaube du solltest nochmal ein wenig PHP Grundlagen lernen.
Um einen Parameter von der URL zu holen, gibt es den Befehl$_GET['PARAMETER']
Dadruch, dass der User aber noch auch sowas schreiben könnte wie ?id=';DROP DATABASE
solltest du die Parameter, die du von User erhälst immer absichern / validieren um soetwas zu vermeiden (Injections)
Hier wären mal Beispiele um soetwas zu verhindern: http://phpforum.de/forum/showthread.php?t=218433 -
http://www.w3schools.com/php/php_get.asp
Beispiel sind jede Links, siehe Google: https://www.google.de/search?q=php+get+&oq=php+get+&sugexp=chrome,mod=18&sourceid=chrome&ie=UTF-8
search ist die Aufgerufene Datei, das ? kündigt die GET parameter an. Diese könnten in PHP aufgerufen werden mit:
echo $_GET["q"]; // php get echo $_GET["oq"]; // php get echo $_GET["sugexp"]; // chrome,mod=18 echo $_GET["sourceid"]; // chrome echo $_GET["ie"]; // UTF-8
Entsprechend dieser Parameter wird reagiert.
Du willst IDs haben, also Zahlen, wenn deine Cronjob.php mit einem Anhängsel Cronjob.php?id=1234 aufgerufen wird, kann deine Datei so aussehen:
// id auslesen und sicherstellen, dass es ein Integer ist, also eine Zahl $id = intval( $_GET[ "id" ] ); // mit der ID Arbeiten // und fertig stellen
Vllt hilft das? Sonst frag weiter.
Liebe Grüße -
nilswerner88 schrieb:
Ich glaube du solltest nochmal ein wenig PHP Grundlagen lernen.
Um einen Parameter von der URL zu holen, gibt es den Befehl
[/url]$_GET['PARAMETER']
Da gebe ich Dir völlig recht, ich muss noch viel lernen, was wohl zu den Grundlagen gehört. Braucht halt alles seine Zeit und ich kenne da ja ein Board wo man immer mal nen netten Tipp bekommt
ggamee schrieb:
http://www.w3schools.com/php/php_get.asp
Beispiel sind jede Links, siehe Google: https://www.google.de/search?q=php+get+&oq=php+get+&sugexp=chrome,mod=18&sourceid=chrome&ie=UTF-8
search ist die Aufgerufene Datei, das ? kündigt die GET parameter an. Diese könnten in PHP aufgerufen werden mit:
echo $_GET["q"]; // php get echo $_GET["oq"]; // php get echo $_GET["sugexp"]; // chrome,mod=18 echo $_GET["sourceid"]; // chrome echo $_GET["ie"]; // UTF-8
Entsprechend dieser Parameter wird reagiert.
Du willst IDs haben, also Zahlen, wenn deine Cronjob.php mit einem Anhängsel Cronjob.php?id=1234 aufgerufen wird, kann deine Datei so aussehen:
// id auslesen und sicherstellen, dass es ein Integer ist, also eine Zahl $id = intval( $_GET[ "id" ] ); // mit der ID Arbeiten // und fertig stellen
Vllt hilft das? Sonst frag weiter.
Liebe Grüße
Danke für die Erklärung und vor allem den Bsp.Code, der hat mir sehr geholfen. Nun habe ich das Grundprinzip dahinter verstanden. Wenn ich nun überlege wie ich es machen wollte, hunderte, wenn nicht tausende einzelne dateien wären das geworden.
Macht sich mit nur 1ner eindeutig besser.
Danke an alle für die Tipps, hat mir in dem Fall wirklich viel Arbeit, Zeit und Geduld gespart.
LG Marco
Beitrag zuletzt geändert: 11.12.2012 1:25:33 von aff3m1tw4ff3 -
Ich empfehle bei soetwas noch ein wenig Std Tutorials zu wälzen. Oder halt stehts hier nachzufragen, den das sind Punkte, wo man auch sehr aufpassen muss, was Scriptkiddies machen. Das ist ein nützliches Tool, das gleichermaßen böse ausgenutzt werden kann. Darum immer PRÜFEN, was da reingekommen ist. Denn man kann es manipulieren. Und wenn du denkst es sei eine Zahl, dann stell zb mit intval sicher, dass es eine Zahl ist! Ansonsten kann das böse enden.
Notfalls hier im Forum fragen, falls du bedenken hast, oder irgendwo was unklar ist.
Liebe Grüße -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage