PHP Cronjob - PHP Datei für löschen von falschen Bannercodes

marcus86

MRZ Design Team
ID: 268721
L
28 Dezember 2006
237
5
Hallo,

ich bin Admin einer Lose-Klickseite.

Was mich nun stört ist, das nach ein paar Stunden manche Banner nicht mehr Verfügbar sind, da die Klicks abgebaut wurden.

Jetzt möchte ich ein cronjob oder ein Aufruf (wenn startseite von user betätigt wird) sollen im Adminbereich die Banner gelöscht werden, die einen falschen bannercode haben. Es gibt für jeden falschen banner eine falsch-url zurück. ebenso gibts ein löschen-button für diesen banner.

Könnt ihr mir beim script-bau mit helfen? Würde mir viel arbeit ersparen so ein script. Sollte 1x por stunde aufgerufen werden.

LG Marcus
 
PHP:
mysql_query("DELETE FROM `irgendnetabelle` WHERE `bannermussgelöschtwerden`=1");
Mangelnde Infos... nur mangelnde Hilfe möglich.

In deiner Crontab trägt du dann das Script halt mit 'jede Stunde' ein.
 
Aber es soll rausgefunden werden, welcher Banner die URL aufweißt für den falschen Bannercode. Dannach sollte dieser Banner gelöscht werden .... oder das script so lange neu gestartet werden bis ein kompletter durchlauf abgeschlossen wurde. Dannach soll nur jede Stunde wieder geprüft werden.

Dein Code ist zwar richtig, aber die Umsetzung ist für mich als nich-php'ler nicht korrekt.

Danke für die bisherigen Antworten ! Hoffe es werden noch mehr :)
 
darf ich das als sig nutzen? *ggg :mrgreen::mrgreen::ugly:
Dein Code ist zwar richtig, aber die Umsetzung ist für mich als nich-php'ler nicht korrekt.

back to topic:
dein skript weiss nie, wann welches banner abgelaufen ist *vorabinfo

gedankengänge:
  • 1. entweder wirfst alle banner des anbieters raus, liest alles neu ein, dass als cron
  • 2. wechsel den anbieter
  • 3. gib jedes banner des anbieters nur für ne stunde frei, speicher halt zeit wann eingelesen, nach ablauf gibts nen feld dass dann auf "bitte lösch mich" setzt.
  • 4. lern php, dann macht das von thehacker auch mehr sinn
  • 5. lern noch mehr php dann kannst das auch selbst lösen
  • 6. könntest n skript basteln, dass deine banner mit den zur verfügung gestellten des anbieters vergleicht, aber das wär ja wie mit ner atombombe auf milben jagd gehen

oder das script so lange neu gestartet werden bis ein kompletter durchlauf abgeschlossen wurde. Dannach soll nur jede Stunde wieder geprüft werden.
8O8O
fang bitte bei punkt 4. an.

stell mir das grad so vor, ich bin user, geh auf deine seite, und nix soll mehr gehen als dass mein pc deinen adminkram macht o_O?!
1. geht so was rein praktisch nicht, denn jeder user macht so ne seite einfach zu ^^
2. ist das enorm unhöflich.
 
delicious schrieb:
entweder wirfst alle banner des anbieters raus, liest alles neu ein, dass als cron
Wenn du das jede Stunde machst, aber Banner mit mehr als 1 Stunde Reload dabei sind, dann hast du da ein Problem, weil dann User doppelt vergütet werden - du selber aber nur ein mal.

Normalerweise werden die Banner doch per Interface eingelesen. Da kann man doch prüfen, ob der Banner bereits vorhanden ist. Wenn nicht, dann eben eintragen. Und am Ende des Durchlaufs alle Banner löschen, die bei diesem Durchgang nicht geupdatet (z. B. Anzahl der vorhandenen Klicks) oder neu eingetragen wurden. Die ganzen Vergleiche sind zwar nicht toll, aber besser, als wenn man jede Menge auszahlen darf, was man selber gar nicht eingenommen hat.
 
Ich glaube, keiner versteht den Sinn meines Postes.

Also lasst es mich noch einmal genau erklären. Bitte genau lesen und durchdenken ! Möchte einen hochwertigen Post aus dem ich etwas schließen kann und einen anfang habe, wie ich es programmieren kann. evtl mit code

Also passt auf:

> Der Cron soll ausgeführt werden ( einmal pro Stunde)
> Script soll alle Bild-URLs der Banner ansehen und vergleichen mit den Bild-URLs, die für einen Rückgabewert "Falscher Bannercode" zurück gegeben werden. bsp: Enthält der Link z.b. "Falscherbannercode.jpeg" in der URL, dann diesen Banner aus der Datenbank löschen.
> Weiter gehts, der nächste Banner wird geprüft.
> Ende der Banner-URL Liste = Ende des Scripts <Script/Cron wird nach einer Stunde wieder ausgeführt>

So meine ich es !!! Klar bringt mir es nix wenn alle Banner wieder eingelesen werrden.... da wird die reloadzeit ja wieder aus der datenbank gelöscht und user können nochmal klicken obwohl ich nix vergütet bekomme...

LG, Marcus
 
> Der Cron soll ausgeführt werden ( einmal pro Stunde)
> Script soll alle Bild-URLs der Banner ansehen und vergleichen mit den Bild-URLs, die für einen Rückgabewert "Falscher Bannercode" zurück gegeben werden. bsp: Enthält der Link z.b. "Falscherbannercode.jpeg" in der URL, dann diesen Banner aus der Datenbank löschen.
> Weiter gehts, der nächste Banner wird geprüft.
> Ende der Banner-URL Liste = Ende des Scripts <Script/Cron wird nach einer Stunde wieder ausgeführt>
So, jetzt bitte meinen Post nochmal lesen und die WHERE-Klausel durch
Code:
[FONT=Courier New][B][COLOR=#9932cc]WHERE[/COLOR][/B] `link` [B][COLOR=#9932cc]LIKE[/COLOR][/B] '%Falscherbannercode.jpeg%'[/FONT]
austauschen.
 
Also gut, hier ist der Cron, der total falsch ist, eigentlich funktioniert der, aber ned so wie ich das will bzw oben beschrieben habe,..,. kannst du mir das so umbauen das immer nur die url gesucht wird die falsch ist? es gibt 2 URls die falsch sein können: Bannerfalsch1.jpeg und Bannerfalsch2.jpeg

Hier der Code:
PHP:
<?php
require('../sqlsettings.php');
$db = @MYSQL_CONNECT($db_server,$db_user,$db_passwort)
or die ("Konnte keine Verbindung zur Datenbank herstellen, bitte versuchen Sie es später erneut!");
$db_check = @MYSQL_SELECT_DB($db_name);
$resultforallgsettings = mysql_query("SELECT * FROM klickareale_sync WHERE id='1'");
$webmasterlose = mysql_fetch_array($resultforallgsettings);
$resultforallgsettings = mysql_query("SELECT * FROM klickareale_sync WHERE id='2'");
$webmasterlose2 = mysql_fetch_array($resultforallgsettings);
$fb=fopen("https://www.webmasterlose.de/lose/interface/output_kampagne.php?id=".$webmasterlose[1]."&pw=".$webmasterlose[2]."&art=forcedclick&verguetung=".$webmasterlose[4]."&reload=".$webmasterlose[3]."&uebrig=".$webmasterlose[6],"r");
if($fb){
    while($line=fgets($fb,1000)) {
    $file.=$line;
    }}
fclose($fb);
$code = explode("|", $file);
$codeanzahl=(count($code)-1)/6;
if($codeanzahl>0){mysql_query("DELETE FROM klickareale_fbanner WHERE interface='1'");}
echo "$codeanzahl Banner werden in die Datenbank aufgenommen....";
while($codeanzahl>0)
{
    $resultforbannersettings = mysql_query("SELECT * FROM klickareale_fbannersettings");
    $resultforbannersettings = mysql_fetch_array($resultforbannersettings);
    $bannerid=$resultforbannersettings[1]+1;
    mysql_query("UPDATE klickareale_fbannersettings SET anzahl='$bannerid' WHERE id='1'");
    $klicks=$codeanzahl*6-3;
    $klicks=$code[$klicks]/100*$webmasterlose[7];
    $reload=$codeanzahl*6-1;
    $reload=$code[$reload]*60;
    $bannerbild=$codeanzahl*6-6;
    $bannerbild=$code[$bannerbild];
    $bannerbild2=$codeanzahl*6-2;
    $bannerbild2=$code[$bannerbild2];
    $verg=$codeanzahl*6-4;
    $verg=$code[$verg]*($webmasterlose[5]/100);
    mysql_query("INSERT INTO klickareale_fbanner (id,mindestaufh,anzahl,reload,bannerurl,bannerziel,aktiv,von,verg,interface) VALUES ('$bannerid','$webmasterlose[8]','$klicks','$reload','https://www.webmasterlose.de/lose/viewbanner.php?id=$webmasterlose[1]&bid=$bannerbild2&aid=$webmasterlose[9]','https://www.webmasterlose.de/lose/clickbanner.php?id=$webmasterlose[1]&bid=$bannerbild2&aid=$webmasterlose[9]','1','0','$verg','1')");
    $codeanzahl=$codeanzahl-1;
}
$file="";
$fb=fopen("https://www.hplose.de/lose/interface/output_kampagne.php?art=forcedclick&verguetung=".$webmasterlose2[4]."&reload=".$webmasterlose2[3]."&uebrig=".$webmasterlose2[6]."&size=468x60","r");
if($fb){
    while($line=fgets($fb,1000)) {
    $file.=$line;
    }}
fclose($fb);
$code = explode("|", $file);
$codeanzahl=(count($code)-1)/6;
if($codeanzahl>0){mysql_query("DELETE FROM klickareale_fbanner WHERE interface='2'");}
echo "$codeanzahl Banner werden in die Datenbank aufgenommen....";
$fehler=0;
while($codeanzahl>0)
{
    
    $resultforbannersettings = mysql_query("SELECT * FROM klickareale_fbannersettings");
    $resultforbannersettings = mysql_fetch_array($resultforbannersettings);
    $bannerid=$resultforbannersettings[1]+1;
    mysql_query("UPDATE klickareale_fbannersettings SET anzahl='$bannerid' WHERE id='1'");
    $klicks=$codeanzahl*6-3;
    $klicks=$code[$klicks]/100*$webmasterlose2[7];
    $reload=$codeanzahl*6-1;
    $reload=$code[$reload]*60;
    $bannerbild=$codeanzahl*6-6;
    $bannerbild=$code[$bannerbild];
    $bannerbild2=$codeanzahl*6-2;
    $bannerbild2=$code[$bannerbild2];
    $verg=$codeanzahl*6-4;
    $verg=$code[$verg]*($webmasterlose2[5]/100);
    mysql_query("INSERT INTO klickareale_fbanner (id,mindestaufh,anzahl,reload,bannerurl,bannerziel,aktiv,von,verg,interface) VALUES ('$bannerid','$webmasterlose2[8]','$klicks','$reload','https://www.hplose.de/lose/viewbanner.php?id=$webmasterlose2[1]&bid=$bannerbild2&aid=$webmasterlose2[2]','https://www.hplose.de/lose/clickbanner.php?id=$webmasterlose2[1]&bid=$bannerbild2&aid=$webmasterlose2[2]','1','0','$verg','2')");
    $codeanzahl=$codeanzahl-1;
}

echo "<br>Fertig!";
?>
Übersehen, dass der Post das Layout in der Breite locker um den Faktor 4 gesprengt hat ? :roll:

PHP-Tag gesetzt
** edit by theHacker **
 
Also lasst es mich noch einmal genau erklären. Bitte genau lesen und durchdenken ! Möchte einen hochwertigen Post aus dem ich etwas schließen kann und einen anfang habe, wie ich es programmieren kann. evtl mit code

Sorry, aber jetzt muss ich lachen. Du möchtest ein hochwertiges Posting erhalten? Dann scroll mal nach oben ;). Ich glaube das Problem ist eher, dass du nicht weißt, wie du das hier umsetzen sollst, was dir hier vorgeschlagen wird. Alleine diese Aussage finde ich klasse:
wie ich es programmieren kann. evtl mit code
Hört sich fast so an: Hätte gerne eine Lösungsmethode, damit ich weiß wie ich die Aufgabe lösen kann. Am besten mit Lösung :mrgreen:. Ich hoffe du siehst den Widerspruch.

Was ich sowieso nicht verstehe: Wenn du die Banner von einem Sponsor einließt, wie beispielsweise von Webmasterlose und eine Kampagne abgelaufen ist, dann steht bei dir in der Datenbank nach wie vor noch die alte Banner Url drin. Da steht dann nichts von einem Fehlercode, weil genau diese Url da drin steht:
PHP:
https://www.webmasterlose.de/lose/viewbanner.php?id=$webmasterlose[1]&bid=$bannerbild2&aid=$webmasterlose[9]

Meine Idee von oben ist doch gar nicht schlecht:
Du setzt vor dem Einlesen einen Status bei den aktuellen Bannern. Beim Einlesen schaust du, ob der Banner schon in der Datenbank vorhanden ist. Wenn dieser vorhanden ist, dann updatest du den Status davon, wenn er nicht vorhanden ist trägst du diesen ein (und setzt da auch den Status). Und nachdem das Script alle Banner eingetragen / geupdatet hat löschst du alle, bei denen kein Status gesetzt wurde. Auf deutsch: Du löschst genau die Banner, die nicht mehr existieren. Also die Banner, wo "Falscher Bannercode" dran steht. Und du musst bei der Lösung keine Banner doppelt vergüten, weil die Banner nicht neu angelegt werden.

Und falls ich mich wirklich täusche und es nur darum geht, die Banner zu löschen mit "xxx.jpg" in der Url, dann musst du doch nur die Methode von theHacker verwenden :roll:. Aber bei Bannern von WML kann ich mir das nur schwer vorstellen, weil ich damit selber auch schon gearbeitet habe.

P.S.: Am besten du überarbeitest bei der Gelegenheit gleich das komplette Script :biggrin:.
 
Dein Code ist zwar richtig, aber die Umsetzung ist für mich als nich-php'ler nicht korrekt.

Möchte einen hochwertigen Post aus dem ich etwas schließen kann und einen anfang habe, wie ich es programmieren kann. evtl mit code

Am besten du überarbeitest bei der Gelegenheit gleich das komplette Script :biggrin:.

Am besten du lernst mal PHP.

Ich selber bin auch kein Meister in PHP, deshalb lass ich schwierige Aufgaben von den tollen Proggern hier erledigen (da ich selber nicht die Zeit habe, mich zu vertiefen). Vielleicht solltest du das auch machen, schon alleine deinen Usern zuliebe auf deiner Slotseite... ;)
 
Naja, ich programmiere mit ASP und versuche mich zu vertiefen. Das meine Seite mit PHP ist ist nun mal so :D ... desswegen bin ich doch hier im Forum, um hilfe zu erhalten. Sinnlose kommentare wie "Lern PHP" ist wohl eher laustig, ... desswegen bin ich doch hier...

Egal, kein rumgestreite.
Also, ich sollte versuchen beim Aktualisieren nur darauf zu schauen, ob der Banner mit dem falschen code nicht nachgeholt wird, da es den ja nicht mehr gibt, seitens der sponsoren. also bräuchte ja nur dieser gelöscht werden...

Nja, vll macht das jemand gegen Lose... die Seite wird eh Stück für Stück gegen ASP ersetzt und nur kleine teile bleiben in PHP....

Thema kann geschlossen werden, finde da vll noch jemand...

LG, Marcus