index.php wird nicht aufgerufen

PC Freak

Ensign
Registriert
Nov. 2003
Beiträge
233
Hab nen Problem mit nem Toplistenscript

wenn ein user für eine seite voten will und auf den banner klickt, der zur seite index.php?id=1 (nummer, je nach seite) führt öffnet sich ne Fehlerseite "Seite nicht vorhanden" vom webspace anbieter ... der Klick wird jedoch in der Topliste gezählt. Nach dem Vote soll jedoch die index.php Datei aufgerufen werden.

Kann mir den Fehler vielleicht einer beheben

Im oberen Teil des index.php Codes ist wohl irgendetwas nicht ganz richtig

hab mir schon gedacht, dass in der zeile was nicht stimmt:
PHP:
header("Location: " . $script_url . "/" . $_SERVER['PHP_SELF'] . "");

hatte auch schon versucht diesen fehler zu beheben, indem ich die variable $script_url durch die url zu index.php versucht habe zu ändern, aber habs nicht hinbekommen. kammen aufeinmal nurnoch fehler, da ich mich damit nicht auskenn und die variable einfach mit der url ersetzt habe

Die ist der komplette obere Teil der index datei:

Code:
PHP:
<?php
############################################
#  Filename   : INDEX.PHP                  #
#------------------------------------------#
############################################

// Including CONFIG.PHP which includes all configurations
require("config.php");

// Including language file
include("languages/" . $lang_file);

if(isset($_GET['id']))
{
   $date = date("dmY");

   $query = mysql_query("SELECT * FROM " . $table . "_sites WHERE memberid = '" . $_GET['id'] . "'");
   $result = mysql_result(mysql_query("SELECT COUNT(1) FROM " . $table . "_sites WHERE memberid = '" . $_GET['id'] . "'"),0);

   if($result)
   {
      $clicksin = "UPDATE " . $table . "_sites SET clicksin = clicksin + 1, hitstotal = hitstotal + 1 WHERE memberid = '" . $_GET['id'] . "'";

      while($row = mysql_fetch_assoc($query))
      {
         $today = $row['hitstoday'];
         $today = explode(" | ",$today);

         $datetoday = $today[0];
         $hitstoday = $today[1];
         $hitsplus = $today[1] + 1;

         if($date != "$datetoday")
         {
            $update = "UPDATE " . $table . "_sites SET hitstoday = '" . $date . " | 1' WHERE memberid = '" . $_GET['id'] . "'";
         }
         else
         {
            $update = "UPDATE " . $table . "_sites SET hitstoday = '" . $date . " | " . $hitsplus . "' WHERE memberid = '" . $_GET['id'] . "'";
         }

         $days = $row['date'];
         $days = explode(" | ",$days);

         $daytoday = $days[0];
         $dayplus = $days[1] + 1;

         $update2 = "UPDATE " . $table . "_sites SET date = '" . $date . " | " . $dayplus . "' WHERE memberid = '" . $_GET['id'] . "'";

         function dohits()
         {
            global $clicksin,$update,$update2,$date,$daytoday;

            mysql_query($clicksin) or die(mysql_error());
            mysql_query($update) or die(mysql_error());

            if($date != "$daytoday")
            {
               mysql_query($update2) or die(mysql_error());
            }
         }
      }

   dohits();
   header("Location: " . $script_url . "/" . $_SERVER['PHP_SELF'] . "");
   }
   else{
      echo "" . $text['90'] . "<br><br><a href=\"" . $_SERVER['PHP_SELF'] . "\">" . $text['82'] . " >></a>";
   }
}
else
{
?>
 
Zuletzt bearbeitet von einem Moderator: (<? zu <?php wegen highlighting)
PC Freak schrieb:
Hab nen Problem mit nem Toplistenscript

hab mir schon gedacht, dass in der zeile was nicht stimmt:
PHP:
header("Location: " . $script_url . "/" . $_SERVER['PHP_SELF'] . "");

also ohne mir den rest des skriptes angeguckt zu haben, würde ich vermuten, dass du da was falsch verstanden hast, der aufruf per location funktioniert folgendermaßen:

PHP:
header("Location:http://www.meinedomain.tld/dateiname.php");

damit das also bei dir funktioniert, muss $script_url deinen domainnamen enthalten....
 
klappt ;D

kann man in der topliste vielleicht noch eine reloadsperre von 24 stunden einbauen, so das alle klicks erst wieder nach 24 std. gezählt werden ?

kenn ich mich nicht mit aus :D
 
meinst du nicht, dass es sinnvoller wäre einen IP check einzuführen ? Damit kannst du unique hits zählen und musst keine "24h reload sperre" machen
 
jo wenn ich wüsste wie das geht *g*

kann mir vielleicht einer helfen ? :freaky:
 
Hystrix schrieb:
damit das also bei dir funktioniert, muss $script_url deinen domainnamen enthalten....

Nein, header-Weiterleitungen funktionieren -- mal auf das URL-Format bezogen -- wie META-Refreshs o.ä..
Wenn ich von domain.de/Ordner/index.php auf domain.de/ZweiterOrdner/test.php gelangen will, kann ich in ersterer auch auf /ZweiterOrdner/test.php verweisen. Oder eben auf ../ZweiterOrdner/test.php. Die absolute Angabe per URL funktioniert natürlich auch, wobei dies in etwa der erstgenannten Lösung mit dem vorangehenden Schrägstrich gleichkäme.

Wollte das nur mal so erwähnen :-)
 
PC Freak schrieb:
jo wenn ich wüsste wie das geht *g*

kann mir vielleicht einer helfen ? :freaky:
also bei meiner shoutbox läuft das wie folgt ab:

- Beim betreten der seite ip feststellen
- beim schreiben die ip des letzten posts mit der aktuellen vergleichen
- beim schreiben zeit_aktueller_post und zeit_letzter_post ermitteln
- wenn ip_letzter_post == ip_aktueller_post muss differenz(zeit_aktueller_post - zeit_letzter_post) > x min sein um posten zu können.

aber wie man das nun bei deinen hits macht, ka :)

wie lange müssen die ips gespeichert werden, maximal einen tag ?, macht bei vielen besuchern ne enorme datenmenge, aber anders wirds ned gehen denk ich mal.
Das bei dir könnte man so realisieren:

beim besuchen ip ermitteln, schaun ob in den letzten 24h einer mit der selben ip da war und wenn nicht $hits++ und ip speichern, ansonsten bleibt $hits gleich
 
Zurück
Oben