Avatar billede fld Nybegynder
26. maj 2005 - 22:37 Der er 13 kommentarer og
1 løsning

Klik tæller

Hej,

Jeg kan ikke få nedestående kode til at virke:
Jeg har oprettet links.txt og CHMOD 777

<head>
<script language="javascript" type="text/javascript">
<?
$fil = 'links.txt';
$row = 1;
$handle = fopen ($fil,"r");
while ($data = fgetcsv ($handle, 500, ";")) {
    $link[$row] = $data[0];
    $hit[$row] = $data[1];
    $row++;
}
fclose ($handle);

if (isset($_GET['id'])) {
    $id = $_GET['id'];
    $hit[$id]++;
    $str = "";
    for ($i=1;$i<$row;$i++) {
        $str .= $link[$i] . ";" . $hit[$i] . "\r\n";
    }
    $handle = fopen ($fil,"w");
    fputs ($handle, $str, strlen($str));
    fclose ($handle);
    $URL = "http://" . $link[$id];
    header('Location: '.$URL);
}else{
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");

    echo "<table>";
    for ($i=1;$i<$row;$i++) {
        echo "<tr><td><a href=\"" .$_SERVER['PHP_SELF'] . "?id=" . $i . "\">" . $link[$i] . "</a></td><td> Hits: " . $hit[$i] . "</td></tr>";
    }
    echo "</table>";
}
?></script>
</head>


eks. på link i min body

se <a href="kontrakt.pdf" target="blank" id="1">EKSEMPEL</a>
Avatar billede hmortensen Nybegynder
26. maj 2005 - 23:23 #1
Skal link ikke være:
<a href="kontrakt.pdf?id=1" target="blank">EKSEMPEL</a>
Avatar billede Slettet bruger
26. maj 2005 - 23:31 #2
Du kan ikke sætte headers osv, inden i <script> tags eller andet html.
Avatar billede fld Nybegynder
26. maj 2005 - 23:44 #3
wicez, det forstår jeg ikke hvad du mener med.?
Avatar billede sungdk Nybegynder
26. maj 2005 - 23:52 #4
Han mener at header skal udskrives som det første.

Dvs. skriver du "hej med dig" inden en header, så går der ged i den.
Avatar billede fld Nybegynder
26. maj 2005 - 23:57 #5
Hmmm, jeg er altså ikke så hård til det her! Er der ikke en som kan vise hvordan koden skal se ud for at virke, et eks. tak ;-)
Avatar billede til_dkmaster Nybegynder
27. maj 2005 - 00:22 #6
<head>
</head>
<script language="javascript" type="text/javascript">
<?
$fil = 'links.txt';
$row = 1;
$handle = fopen ($fil,"r");
while ($data = fgetcsv ($handle, 500, ";")) {
    $link[$row] = $data[0];
    $hit[$row] = $data[1];
    $row++;
}
fclose ($handle);

if (isset($_GET['id'])) {
    $id = $_GET['id'];
    $hit[$id]++;
    $str = "";
    for ($i=1;$i<$row;$i++) {
        $str .= $link[$i] . ";" . $hit[$i] . "\r\n";
    }
    $handle = fopen ($fil,"w");
    fputs ($handle, $str, strlen($str));
    fclose ($handle);
    $URL = "http://" . $link[$id];
    header('Location: '.$URL);
}else{
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");

    echo "<table>";
    for ($i=1;$i<$row;$i++) {
        echo "<tr><td><a href=\"" .$_SERVER['PHP_SELF'] . "?id=" . $i . "\">" . $link[$i] . "</a></td><td> Hits: " . $hit[$i] . "</td></tr>";
    }
    echo "</table>";
}
?></script>


Måske sådan :)
Avatar billede fld Nybegynder
27. maj 2005 - 00:26 #7
til_dkmaster, nej jeg får stadig denne meddelse: <b>Warning</b>:  Cannot modify header information - headers already sent by............................
Avatar billede til_dkmaster Nybegynder
27. maj 2005 - 00:29 #8
Aha..! Lyder somom du skal udskifte din header('Location: '.$URL); med en META Refresh..!prøv det her:


<head>
</head>
<script language="javascript" type="text/javascript">
<?
$fil = 'links.txt';
$row = 1;
$handle = fopen ($fil,"r");
while ($data = fgetcsv ($handle, 500, ";")) {
    $link[$row] = $data[0];
    $hit[$row] = $data[1];
    $row++;
}
fclose ($handle);

if (isset($_GET['id'])) {
    $id = $_GET['id'];
    $hit[$id]++;
    $str = "";
    for ($i=1;$i<$row;$i++) {
        $str .= $link[$i] . ";" . $hit[$i] . "\r\n";
    }
    $handle = fopen ($fil,"w");
    fputs ($handle, $str, strlen($str));
    fclose ($handle);
    $URL = "http://" . $link[$id];
    echo'<META HTTP-EQUIV=Refresh CONTENT="0; URL=$URL">';
}else{
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");

    echo "<table>";
    for ($i=1;$i<$row;$i++) {
        echo "<tr><td><a href=\"" .$_SERVER['PHP_SELF'] . "?id=" . $i . "\">" . $link[$i] . "</a></td><td> Hits: " . $hit[$i] . "</td></tr>";
    }
    echo "</table>";
}
?></script>
Avatar billede fld Nybegynder
27. maj 2005 - 00:34 #9
Det hjælper ikke :)
Avatar billede backside Nybegynder
27. maj 2005 - 00:47 #10
Er det samme fejl du får?
Avatar billede Slettet bruger
27. maj 2005 - 00:50 #11
Hele dit script skal laves om. Du udskriver dit php inde i dit html, hvilket er ulovligt.

Det ville være smart at teste om $_GET['id'] er sat som det første, så du ikke senere skal til at "fortryde", og sende headers.
Avatar billede Slettet bruger
27. maj 2005 - 00:52 #12
Du skal også være klar over, at et linieskift eller andet html (f.eks. <html>-tagget) heller ikke er lovligt før php-headers()

<?
$fil = 'links.txt';
$row = 1;
$handle = fopen ($fil,"r");
while ($data = fgetcsv ($handle, 500, ";")) {
    $link[$row] = $data[0];
    $hit[$row] = $data[1];
    $row++;
}
fclose ($handle);

if (isset($_GET['id'])) {
    $id = $_GET['id'];
    $hit[$id]++;
    $str = "";
    for ($i=1;$i<$row;$i++) {
        $str .= $link[$i] . ";" . $hit[$i] . "\r\n";
    }
    $handle = fopen ($fil,"w");
    fputs ($handle, $str, strlen($str));
    fclose ($handle);
    $URL = "http://" . $link[$id];
    header('Location: '.$URL);
}else{
    echo "<head>
            <script language="javascript" type="text/javascript">";
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");

    echo "<table>";
    for ($i=1;$i<$row;$i++) {
        echo "<tr><td><a href=\"" .$_SERVER['PHP_SELF'] . "?id=" . $i . "\">" . $link[$i] . "</a></td><td> Hits: " . $hit[$i] . "</td></tr>";
    }
    echo "</table></script>
</head>";
}
?>
Avatar billede fld Nybegynder
27. maj 2005 - 09:42 #13
Okay, sådan noget kan jeg ikke !

Jeg har fundet noget andet, jeg skal kune bruge det til at tælle et link og tror jeg kan bruge dette? Men hvad skal jeg gøre med redirect.php, skal jeg oprette en php fil eller hvad skal jeg.?


<a href="redirect.php?url=en_url.dk">

redirect.php
-----------
// gem i .txt eller database antal klik
header("location: ".$_GET['url']); // send brugeren af sted
Avatar billede fld Nybegynder
27. maj 2005 - 21:28 #14
Jeg ligge selv et svar og opretter et nyt med overstående.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester