Avatar billede dwr Nybegynder
30. marts 2007 - 10:01 Der er 50 kommentarer og
1 løsning

Hjælp til verifikations-billede.

Hejsa.
Jeg står med et problem der generer mig.
Jeg har en gæstebog på min hjemmeside, hvor man skal udfylde en  form, når man vil skrive i den og så til sidst plotte tal/bokstaver ind fra et billede for at få verificeret, at man ikke er en bot.
Desværre har jeg det problem, at folk som har postet én gang allerede eller bare har været inde på formen og så et andet sted på siden inden de kommer tilbage ser det billede de havde sidste gang fordi det ikke bliver ryddet fra deres cache.
Det kan selvfølgelig afhjælpes ved at trykke F5 (opdatér), hvorved den opdaterer billede, men det er lidt besværligt, at folk skal gøre det hver gang.

Er det ikke muligt at tvinge siden til at opdatere billedet hver gang man går ind på siden?

Koden ser således ud:

<?php
$im = ImageCreate(200, 40);
$white = ImageColorAllocate($im, 255, 255, 255);
$black = ImageColorAllocate($im, 120, 200, 68);
srand((double)microtime()*1000000);
$string = md5(rand(0,9999));
$string=substr($string,1,7);
$verification = $string;
ImageFill($im, 0, 0, $black);
ImageString($im, 4, 70, 10, $verification, $white);
Imagejpeg($im, "images/verify.jpeg");
ImageDestroy($im);
?>

På forhånd tak for hjælpen.
dwr
Avatar billede tjens Nybegynder
30. marts 2007 - 10:39 #1
Prøv at styre header:

<?php
Header ("Content-type:image/jpeg");
header("Expires: -1");
Avatar billede dkfire Nybegynder
30. marts 2007 - 10:55 #2
Jeg tror problemet ligger i at du gemmer dit dynamiske billede som et billede, derved gemmer din brugers browser billedet lokalt.
Avatar billede dwr Nybegynder
30. marts 2007 - 11:02 #3
dkfire - Fejlen er lokaliseret ;) Det er løsningen jeg søger :)
Avatar billede tjens Nybegynder
30. marts 2007 - 11:30 #4
OK, når det ikke er PHP, der outputter jpg mod browseren duer mit forslag ikke.

Derimod kan du lade din webserver sætte expires header for billederne i en underfolder:
http://www.eksperten.dk/spm/403466
Avatar billede dwr Nybegynder
30. marts 2007 - 12:05 #5
Hmm.. Jeg har ikke egen server, men bruger et webhotel. httpd.conf ligner ikke en fil de sådan lige lader mig rode med :s
Avatar billede sw_red_6 Nybegynder
30. marts 2007 - 12:13 #6
du kunne prøve at sende den side med det billede på med:
// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);

// HTTP/1.0
header("Pragma: no-cache");

Der står lidt om det her: http://dk.php.net/manual/da/function.header.php
Avatar billede dkfire Nybegynder
30. marts 2007 - 13:01 #7
Du kunne også ligge din phpkode som laver billeder og i en phpfil for sig, og så kalde den phpfil med et <img> tag. Så behøver du heller ikke gemme billedet hvergang, og du får heller ikke problemer hvis der er flere bruger samtidigt.
Du kan så bruge session til at sende din streng mellem billedet og siden.
Avatar billede dwr Nybegynder
30. marts 2007 - 13:04 #8
Indtil videre virker det heller ikke. Jeg har implementeret det, så det står således nu:

<?
include "header.php";
?>
<?php
$im = ImageCreate(200, 40);  //create image
$white = ImageColorAllocate($im, 255, 255, 255);
$black = ImageColorAllocate($im, 120, 200, 68);
srand((double)microtime()*1000000);
$string = md5(rand(0,9999));
$string=substr($string,1,7);
$verification = $string;
ImageFill($im, 0, 0, $black);
ImageString($im, 4, 70, 10, $verification, $white);
Imagejpeg($im, "images/verify.jpeg");
ImageDestroy($im);
?>


header.php:
---
<?php
session_start();
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>
<html>
    <head>
        <title>Sludder</title>
        <link rel="stylesheet" type="text/css" href="../../style/lindquist.css"></link>
    </head>
    <body>
        <div id="banner">
<script type="text/javascript">
var months=new Array(13);
months[1]="Jan.";
months[2]="Feb.";
months[3]="Mar.";
months[4]="Apr";
months[5]="May";
months[6]="June";
months[7]="July";
months[8]="Aug";
months[9]="Sept";
months[10]="Oct";
months[11]="Nov";
months[12]="Dec";
var time=new Date();
var lmonth=months[time.getMonth() + 1];
var date=time.getDate();
var year=time.getFullYear();
var hours=time.getHours();
var minutes=time.getMinutes();
var seconds=time.getSeconds();
document.write("<h5>" + date + ". " + lmonth);
document.write(" kl. " + hours + ":" + minutes + "</h5>");
</script>
</div>
        <div id="textbox">
----

Den melder ingen fejl eller lign, men det virker heller ikke med at tvinge den til at opdatere billedet hver gang man går ind på siden.
Avatar billede dwr Nybegynder
30. marts 2007 - 13:08 #9
dkfire...
Jeg tror jeg har fanget din tankegange, men jeg er ikke så vant i sproget, da jeg kun har roddet med det i 1½ uge og sidder og prøver mig frem - bl.a. ved at editere/modificere freeware scripts/koder, som jeg synes jeg kan bruge, men ikke helt passer ind som jeg vil have det. Bl.a. derfor tror jeg ikke jeg er dygtig nok til det stunt ;)
Lyder ellers som en udemærket idé..
Avatar billede dkfire Nybegynder
30. marts 2007 - 13:18 #10
Det er eller let nok når du nu er kommer så langt alligevel.

Hvis du starter med at lave en php-fil, billede.php, og ligger den første del af din php kode som omhandler dit billede der i.
billede.php:
<?php
$im = ImageCreate(200, 40);  //create image
$white = ImageColorAllocate($im, 255, 255, 255);
$black = ImageColorAllocate($im, 120, 200, 68);
srand((double)microtime()*1000000);
$string = md5(rand(0,9999));
$string=substr($string,1,7);
$verification = $string;
ImageFill($im, 0, 0, $black);
ImageString($im, 4, 70, 10, $verification, $white);
Imagejpeg($im, "images/verify.jpeg");
ImageDestroy($im);
?>

Så skal vi bare lige rette den lidt til, så den istedet opføre sig som et billede.
Det gøres ved at fjerne: Imagejpeg($im, "images/verify.jpeg");
Istedet indsætter du:
header('Content-Type: image/jepg');
imagejpg($im);

Du vil billede.php vise et billede hvergang du ser den i din browser.
Avatar billede dwr Nybegynder
30. marts 2007 - 13:29 #11
Hmm... Så får jeg:

<br />
<b>Fatal error</b>:  Call to undefined function imagejpg() in <b>/var/www/hotserv.dk/users/lindquist/gb/verify.php</b> on line <b>12</b><br />
Avatar billede dwr Nybegynder
30. marts 2007 - 13:30 #12
Hvilket skulle være: imagejpg($im);
Avatar billede dkfire Nybegynder
30. marts 2007 - 13:40 #13
Nu mangler vi kun at gøre brug af session, således at din streng kendes både af billedet og din side.

Hvis du i billede.php ændre følgende:
srand((double)microtime()*1000000);
$string = md5(rand(0,9999));
$string=substr($string,1,7);
$verification = $string;

til
$verification = $_SESSION['streng'];

og i toppen af filen sætter
session_start();

Det bliver til billede:
<?php
$im = ImageCreate(200, 40);  //create image
$white = ImageColorAllocate($im, 255, 255, 255);
$black = ImageColorAllocate($im, 120, 200, 68);
$verification = $_SESSION['streng'];
ImageFill($im, 0, 0, $black);
ImageString($im, 4, 70, 10, $verification, $white);
header('Content-Type: image/jpeg');
imagejpg($im);
ImageDestroy($im);
?>

I din fil som skal vise billedet start du så med:
<?php
session_start();
srand((double)microtime()*1000000);
$string = md5(rand(0,9999));
$_SESSION['streng'] =substr($string,1,7);
?>
og der hvor du vil vise billedet indsætter du så:
<img scr="billede.php">
Avatar billede dkfire Nybegynder
30. marts 2007 - 13:41 #14
Hmm
to sek
Avatar billede dkfire Nybegynder
30. marts 2007 - 13:42 #15
mig der lige ikke kan stave, he he
det skal selvfølgelig være:
Imagejpeg($im);
Avatar billede dwr Nybegynder
30. marts 2007 - 13:54 #16
Det havde jeg allerede rettet :) havde godt set den.. kigger lige på ovenstående - og iøvrigt - så vidt, så tak fordi du gider tage dig tid til at hjælpe mig :)
Avatar billede dkfire Nybegynder
30. marts 2007 - 14:01 #17
Nogle gang kan det gå lidt stærkt, he he.
billede.php:
<?php
session_start();
$im = ImageCreate(200, 40);  //create image
$white = ImageColorAllocate($im, 255, 255, 255);
$black = ImageColorAllocate($im, 120, 200, 68);
$verification = $_SESSION['streng'];
ImageFill($im, 0, 0, $black);
ImageString($im, 4, 70, 10, $verification, $white);
header('Content-Type: image/jpeg');
imagejpeg($im);
ImageDestroy($im);
?>
Avatar billede dwr Nybegynder
30. marts 2007 - 14:05 #18
Parse error: syntax error, unexpected T_STRING in /var/www/hotserv.dk/users/lindquist/gb/addentry.php on line 41

som er: <img scr="billede.php">
Avatar billede tjens Nybegynder
30. marts 2007 - 14:49 #19
<img scr="billede.php"> er HTML og skal stå udenfor PHP tags i addentry.php

Og så kan
header("Expires: -1");
bruges igen til cache styring i filen billede.php
Avatar billede dwr Nybegynder
30. marts 2007 - 15:07 #20
hmm.. men den står i print "<img .... >"
Det burde vel ikke påvirke så?
Avatar billede tjens Nybegynder
30. marts 2007 - 15:31 #21
Der går vel koks i " så?

Prøv med '<img scr="billede.php">' i din print.
Avatar billede dkfire Nybegynder
30. marts 2007 - 15:32 #22
Prøv at vise addentry
Avatar billede johan.o Nybegynder
01. april 2007 - 13:31 #23
Undskyld hvis jeg blander mig utidigt, men kunne det ikke være en løsning at 'blot' give billederne et unikt navn.

-->

$unik_key=time();

// her laver du så dit billede

Imagejpeg($im, "images/".$unik_key.".jpeg");

<--

Blot et princip, du får naturligvis lavet en del billeder i din images folder, men du kunne jo så slette det efter et succesfuldt login, og så blot manualt slette resten en gang imellem.....kan muligvis laves noget kode der holder folderen ren...især når vi nu har givet billederne et 'timestamp' i navnet ;)

Mvh. Johan
Avatar billede dwr Nybegynder
02. april 2007 - 08:26 #24
Undskyld for den meget lange ventetid, men jeg tog hjem fra arbejde og konstaterede, at nogle tåber havde gravet nogle kabler over ude foran min lejlighed, så har ikke haft net hele weekenden.

Johan. O >> Det ville muligvis være en mulighed, men det bliver alligevel en del billeder og min host er p.t. hotserv.dk, hvilket begrænser pladsen en del.

Tjens >> Det hjalp. Nu viser den et "i stykker" billede. Altså den viser som om der skal vises et billede den bare ikke kan indlæse.

dkfire>> addentry.php:

<?
include "header.php";
?>
<?php
srand((double)microtime()*1000000);
$string = md5(rand(0,9999));
$_SESSION['streng'] =substr($string,1,7);
?>
<link rel="stylesheet" type="text/css" href="admin/style.css"></link>
<?php
include "admin/connect.php";
$s=$_SERVER["REMOTE_ADDR"];
$ipbancheck="SELECT * from gb_banip where IP='$s'";
$ipbancheck2=mysql_query($ipbancheck);
while($ipbancheck3=mysql_fetch_array($ipbancheck2))
{
  $IPBANNED=$ipbancheck3[IP];
}
if ($IPBANNED)
    {
      print "You have been banned from posting";
    }

else
  {
   
    if (!isset($_POST['submit']))
    {
    print "<table class='entry'  border='0'><tr class='row1'><td>";
    print "<form method='post' action='addentry.php' name='form'>";
    print "<b>Caution! If you posted lately in our guestbook, please press refresh in your browser before filling out these forms for the verification-image to update.</b><br><br>";
    print "Name:<br> <input type='text' name='name' size='40'><br>";
    print "Country:<br><input type='text' name='country' size='40'><br>";
    print "Homepage(include http://):<br><input type='text' name='homepage' size='40'><br>";
    print "E-mail:<br><input type='text' name='email' size='40'><br>";
    print "MSN:<br><input type='text' name='msn' size='40'><br>";
    print "Comment for the guestbook:<br>";
    print "<textarea rows='6' name='comment' cols='45'></textarea><br>";
    print"<input type='hidden' name='secretcode' value='$verification'>";
    print "Type in the image you see below: <input type='text' name='code' size='15'><br>";
    print '<img scr="billede.php"><br><br>';
    print "<input type='submit' name='submit' value='submit'>";
    print "</form><br>";
    print "<a onClick=\"addSmiley(':)')\"><img src='images/smile.gif'></a> ";
    print "<a onClick=\"addSmiley(':(')\"><img src='images/sad.gif'></a> ";
    print "<a onClick=\"addSmiley(';)')\"><img src='images/wink.gif'></a> ";
    print "<a onClick=\"addSmiley(';smirk')\"><img src='images/smirk.gif'></a> ";   
    print "<a onClick=\"addSmiley(':blush')\"><img src='images/blush.gif'></a> ";
    print "<a onClick=\"addSmiley(':angry')\"><img src='images/angry.gif'></a> ";
    print "<a onClick=\"addSmiley(':shocked')\"><img src='images/shocked.gif'></a> ";
    print "<a onClick=\"addSmiley(':cool')\"><img src='images/cool.gif'></a> ";
    print "<a onClick=\"addSmiley('(heart)')\"><img src='images/heart.gif'></a> ";
    print "<a onClick=\"addSmiley('(!)')\"><img src='images/exclamation.gif'></a> ";
    print "<a onClick=\"addSmiley('(?)')\"><img src='images/question.gif'></a><br>";
    print "<script language=\"JavaScript\" type=\"text/javascript\">\n";
    print "function addSmiley(textToAdd)\n";
    print "{\n";
    print "document.form.comment.value += textToAdd;";
    print "document.form.comment.focus();\n";
    print "}\n";
    print "</script>\n";
    print "<br><br>";
  }

   


  else if (isset($_POST['submit']))
  {
    $name=$_POST['name'];
    $country=$_POST['country'];
    $email=$_POST['email'];
    $homepage=$_POST['homepage'];
    $aim=$_POST['aim'];
    $icq=$_POST['icq'];
    $yim=$_POST['yim'];
    $msn=$_POST['msn'];
    $comment=$_POST['comment'];
    $code=$_POST['code'];
    $secretcode=$_POST['secretcode'];
    if(!$name || !$comment)
    {
      print "<font color='red'>Name or comment not entered, please go back and sign again</font><br>";
    }
    else if($code!=$secretcode)
    {
      print "<font color='red'>Validation failed</font>";
    }
  else
    {
    $r=$_SERVER["REMOTE_ADDR"];
    $day=date("D M d, Y H:i:s");
    $timegone=date("U") ; //seconds since Jan 1st, 1970
    $putinguestbook="INSERT INTO gbook(name, country, mail, homepage, comment, realtime, aim, icq, yim, msn, time,IP) VALUES('$name','$country','$email','$homepage','$comment','$day','$aim','$icq','$yim','$msn','$timegone','$r')";
    mysql_query($putinguestbook);
    print "Thanks for posting, you will now be redirected <META HTTP-EQUIV = 'Refresh' Content = '2; URL =index.php'> ";
    }
  }

?>

</td></tr></table>
<?
include "footer.php";
?>

// ------------------------------
header.php:

<?php
session_start();
?>
<html>
    <head>
        <title>Sandbox</title>
        <link rel="stylesheet" type="text/css" href="http://???.hotserv.dk/style/???.css"></link>
    </head>
    <body>
        <div id="banner">
<script type="text/javascript">
var months=new Array(13);
months[1]="Jan.";
months[2]="Feb.";
months[3]="Mar.";
months[4]="Apr";
months[5]="May";
months[6]="June";
months[7]="July";
months[8]="Aug";
months[9]="Sept";
months[10]="Oct";
months[11]="Nov";
months[12]="Dec";
var time=new Date();
var lmonth=months[time.getMonth() + 1];
var date=time.getDate();
var year=time.getFullYear();
var hours=time.getHours();
var minutes=time.getMinutes();
var seconds=time.getSeconds();
document.write("<h5>" + date + ". " + lmonth);
document.write(" kl. " + hours + ":" + minutes + "</h5>");
</script>
</div>
        <div id="textbox">


// ------------------------
footer.php:


        </div>
        <link rel="stylesheet" type="text/css" href="http://???.hotserv.dk/style/???.css"></link>
        <div id="menu">
            <h1>Menu</h1>
            <h2>
                <a href="http://???.hotserv.dk/aboutus.php" alt="About Us">About Us</a><br />
                <a href="http://???.hotserv.dk/pictures.php" alt="Pictures">Pictures</a><br />
                <a href="http://???.hotserv.dk/links.php" alt="Links">Links</a><br />
                <a href="http://???.hotserv.dk/gb" alt="Guestbook">Guestbook</a><br /><br />
                <a href="http://???.hotserv.dk" alt="Frontpage">Back to Front</a><br /><br /><br />
                <a href="http://???.hotserv.dk/gb/admin/login.php" alt="Login">Admin Login</a><br />
                <a href="http://???.hotserv.dk/gb/admin/" alt="Admin">Admin Area</a><br />
            </h2>
        </div>
    </body>
</html>
Avatar billede johan.o Nybegynder
02. april 2007 - 09:52 #25
Måske dette kunne bruges -->

<?php

$dir="images/";
$now=time();
$age=3600;

if(is_dir($dir)) {
if($dh=opendir($dir)) {
  while(($file=readdir($dh))!==false) {
  if(preg_match("/^[0-9]{10}.jpeg$/", $file)) {
    $stamp=substr($file, 0, 10);
    if(($now-$stamp)>$age) {
    unlink($file); } } } } }

$im = ImageCreate(200, 40);
$white = ImageColorAllocate($im, 255, 255, 255);
$black = ImageColorAllocate($im, 120, 200, 68);
srand((double)microtime()*1000000);
$string = md5(rand(0,9999));
$string=substr($string,1,7);
$verification = $string;
ImageFill($im, 0, 0, $black);
ImageString($im, 4, 70, 10, $verification, $white);
Imagejpeg($im, "images/".$now.".jpeg");
ImageDestroy($im);

?>

Det er absolut ikke testet (skrevet på arbejde) men det skulle slette alle 'images' der er ældre end 1 time fra folderen, hver gang en bruger får præsenteret et nyt 'image'. Hvis en time er for meget kan perioden blot sættes ned. Mht. flere samtidige brugere er filnavnet unikt med mindre at to brugere anmoder om et 'image' inden for det samme sekund.

Mvh. Johan
Avatar billede dwr Nybegynder
02. april 2007 - 11:54 #26
Den løsning virker faktisk ikke helt dårlig..

Det eneste problem er, at den nu slet ikke opdaterer billedet - heller ikke selvom man opdaterer siden - og sætter jeg tiden til f.eks. 1, så får jeg følgende melding:

Warning: unlink(1175507606.jpeg) [function.unlink]: No such file or directory in /var/www/hotserv.dk/users/???/gb/addentry.php on line 16
Avatar billede johan.o Nybegynder
02. april 2007 - 12:36 #27
Hm, det må jeg vist kigge på når jeg kommer hjem engang...later :)

Mvh. Johan
Avatar billede dwr Nybegynder
02. april 2007 - 12:38 #28
Ok :) Jeg venter spændt... Svarer jeg ikke i aften, så har de stadig ikke fundet ud af at få mit net op endnu.

Og indtil videre mange tak for hjælpen.
Avatar billede johan.o Nybegynder
02. april 2007 - 23:46 #29
Hm, det virker upåklageligt når jeg tester det herhjemme.....kan du vise den aktuelle kode du bruger ?

Mvh. Johan
Avatar billede dwr Nybegynder
03. april 2007 - 07:57 #30
Selvfølgelig.

<?
include "header.php";
?>
<?php

$dir="verifyimg/";
$now=time();
$age=1;

if(is_dir($dir)) {
if($dh=opendir($dir)) {
while(($file=readdir($dh))!==false) {
if(preg_match("/^[0-9]{10}.jpeg$/", $file)) {
$stamp=substr($file, 0, 10);
if(($now-$stamp)>$age) {
unlink($file); } } } } }

$im = ImageCreate(200, 40);
$white = ImageColorAllocate($im, 255, 255, 255);
$black = ImageColorAllocate($im, 120, 200, 68);
srand((double)microtime()*1000000);
$string = md5(rand(0,9999));
$string=substr($string,1,7);
$verification = $string;
ImageFill($im, 0, 0, $black);
ImageString($im, 4, 70, 10, $verification, $white);
Imagejpeg($im, "verifyimg/".$now.".jpeg");
ImageDestroy($im);

?>

<body>
<center>
<link rel='stylesheet' href='admin/style.css' type='text/css'>

<?php
include "admin/connect.php";
$s=$_SERVER["REMOTE_ADDR"];
$ipbancheck="SELECT * from gb_banip where IP='$s'";
$ipbancheck2=mysql_query($ipbancheck);
while($ipbancheck3=mysql_fetch_array($ipbancheck2))
{
  $IPBANNED=$ipbancheck3[IP];
}
if ($IPBANNED)
    {
      print "You have been banned from posting";
    }

else
  {
   
    if (!isset($_POST['submit']))
    {
    print "<table class='entry'  border='6'><tr class='row1'><td>";
    print "<form method='post' action='addentry.php' name='form'>";
    print "<b>Name:</b><br> <input type='text' name='name' size='40'><br>";
    print "<b>Country:</b><br><input type='text' name='country' size='40'><br>";
    print "<b>Homepage(include http://):</b><br><input type='text' name='homepage' size='40'><br>";
    print "<b>E-mail:</b><br><input type='text' name='email' size='40'><br>";
    print "<b>Aim:</b><br><input type='text' name='aim' size='40'><br>";
    print "<b>ICQ:</b><br><input type='text' name='icq' size='40'><br>";
    print "<b>Yahoo:</b><br><input type='text' name='yim' size='40'><br>";
    print "<b>MSN:</b><br><input type='text' name='msn' size='40'><br>";
    print "<b>Comment:</b><br>";
    print "<textarea rows='6' name='comment' cols='45'></textarea><br>";
    print"<input type='hidden' name='secretcode' value='$verification'>";
    print "Type in the image you see below: <input type='text' name='code' size='15'><br>"; 
    print "<img src='images/verify.jpeg' border='0'><br><br>";
    print "<input type='submit' name='submit' value='submit'>";
    print "</form><br>";
    print "<center>Clickable Smilies</center>";
    print "<a onClick=\"addSmiley(':)')\"><img src='images/smile.gif'></a> ";
    print "<a onClick=\"addSmiley(':(')\"><img src='images/sad.gif'></a> ";
    print "<a onClick=\"addSmiley(';)')\"><img src='images/wink.gif'></a> ";
    print "<a onClick=\"addSmiley(';smirk')\"><img src='images/smirk.gif'></a> ";   
    print "<a onClick=\"addSmiley(':blush')\"><img src='images/blush.gif'></a> ";
    print "<a onClick=\"addSmiley(':angry')\"><img src='images/angry.gif'></a> ";
    print "<a onClick=\"addSmiley(':shocked')\"><img src='images/shocked.gif'></a> ";
    print "<a onClick=\"addSmiley(':cool')\"><img src='images/cool.gif'></a> ";
    print "<a onClick=\"addSmiley(':ninja')\"><img src='images/ninja.gif'></a> ";
    print "<a onClick=\"addSmiley('(heart)')\"><img src='images/heart.gif'></a> ";
    print "<a onClick=\"addSmiley('(!)')\"><img src='images/exclamation.gif'></a> ";
    print "<a onClick=\"addSmiley('(?)')\"><img src='images/question.gif'></a><br>";
    print "<a onclick=\"addSmiley(':{blink}')\"><img src='images/winking.gif'></a>";
    print "<A onclick=\"addSmiley('{clover}')\"><img src='images/clover.gif'></a>";
    print "<a onclick=\"addSmiley(':[glasses]')\"><img src='images/glasses.gif'></a>";
    print "<a onclick=\"addSmiley(':[barf]')\"><img src='images/barf.gif'></a>";
    print "<a onclick=\"addSmiley(':[reallymad]')\"><img src='images/mad.gif'></a>";
    print "<script language=\"JavaScript\" type=\"text/javascript\">\n";
    print "function addSmiley(textToAdd)\n";
    print "{\n";
    print "document.form.comment.value += textToAdd;";
    print "document.form.comment.focus();\n";
    print "}\n";
    print "</script>\n";
    print "<br><br>";
    print "<A href='bbcode.php' target='top'>BBCode instructions</a>";
  }

   


  else if (isset($_POST['submit']))
  {
    $name=$_POST['name'];
    $country=$_POST['country'];
    $email=$_POST['email'];
    $homepage=$_POST['homepage'];
    $aim=$_POST['aim'];
    $icq=$_POST['icq'];
    $yim=$_POST['yim'];
    $msn=$_POST['msn'];
    $comment=$_POST['comment'];
    $code=$_POST['code'];
    $secretcode=$_POST['secretcode'];
    if(!$name || !$comment)
    {
      print "<font color='red'>Name or comment not entered, please go back and sign again</font><br>";
    }
    else if($code!=$secretcode)
    {
      print "<font color='red'>Validation failed</font>";
    }
  else
    {
    $r=$_SERVER["REMOTE_ADDR"];
    $day=date("D M d, Y H:i:s");
    $timegone=date("U") ; //seconds since Jan 1st, 1970
    $putinguestbook="INSERT INTO gbook(name, country, mail, homepage, comment, realtime, aim, icq, yim, msn, time,IP) VALUES('$name','$country','$email','$homepage','$comment','$day','$aim','$icq','$yim','$msn','$timegone','$r')";
    mysql_query($putinguestbook);
    print "Thanks for posting, you will now be redirected <META HTTP-EQUIV = 'Refresh' Content = '2; URL =index.php'> ";
    }
  }

?>

</td></tr></table>

</center></body>

<?
include "footer.php";
?>
Avatar billede johan.o Nybegynder
03. april 2007 - 10:46 #31
Ja okay, prøv med følgende rettelser -->

Skift toppen ud med dette -->

$dir=$_SERVER['DOCUMENT_ROOT']."/exp/verifyimg/";
$now=time();
$age=1;

if(is_dir($dir)) {
if($dh=opendir($dir)) {
while(($file=readdir($dh))!==false) {
if(preg_match("/^[0-9]{10}.jpeg$/", $file)) {
$stamp=substr($file, 0, 10);
if(($now-$stamp)>$age) { echo "<pre>File : ".$dir.$file."</pre>";
unlink($dir.$file); } } } } }

I første linje skal du naturligvis ændre path'en til din egen struktur.

I din udskrift af formen skal denne linje ind hvor du viser dit image -->

    print "<img src='verifyimg/".$now.".jpeg' border='0'><br><br>";

Lad høre om resulatet.

Mvh. Johan
Avatar billede johan.o Nybegynder
03. april 2007 - 10:51 #32
Oups, jeg havde lige glemt at slette min egen echo statement i ovenstående...den sletter du selvfølgelig bare :)

Mvh. Johan
Avatar billede dwr Nybegynder
03. april 2007 - 10:54 #33
Jeg kigger på det med det samme
Avatar billede dwr Nybegynder
03. april 2007 - 11:00 #34
Du er et geni! :)

Mange mange tak! Det fungerer nu. Mistede fuldkommen overblikket ovet det til sidst.

Opret endelig et svar, så jeg kan give dig point og god karma ;)
Avatar billede dwr Nybegynder
03. april 2007 - 11:02 #35
Øh... Iøvrigt.. Lige en lille ting.. Hvordan får jeg den til at slette dem igen? For de bliver liggende i mappen.
Avatar billede johan.o Nybegynder
03. april 2007 - 11:04 #36
Du kunne vel egentligt også 'fixe' problemet med samtidige 'images' ved at lave noget alá det her -->

while(file_exists($_SERVER['DOCUMENT_ROOT']."/din_path/".$now.".jpeg")) { $now++; }

lige før du gemmer 'billedet'.....igen er det ikke testet, men blot et princip.

Mvh. Johan
Avatar billede johan.o Nybegynder
03. april 2007 - 11:05 #37
Nåh okay, det var hurtigt :)

For at kunne svare på det skal jeg nok se toppen af koden som du har lavet den nu.

Mvh. Johan
Avatar billede dwr Nybegynder
03. april 2007 - 11:16 #38
Nu får du lige hele koden inkl. header og footer.
Jeg har indsat og tilpasset sådan som jeg har forstået, at det bør stilles op.


<?php
session_start();
?>
<html>
    <head>
        <title>Sandbox</title>
        <link rel="stylesheet" type="text/css" href="http://lindquist.hotserv.dk/style/lindquist.css"></link>
    </head>
    <body>
        <div id="banner">
<script type="text/javascript">
var months=new Array(13);
months[1]="Jan.";
months[2]="Feb.";
months[3]="Mar.";
months[4]="Apr";
months[5]="May";
months[6]="June";
months[7]="July";
months[8]="Aug";
months[9]="Sept";
months[10]="Oct";
months[11]="Nov";
months[12]="Dec";
var time=new Date();
var lmonth=months[time.getMonth() + 1];
var date=time.getDate();
var year=time.getFullYear();
var hours=time.getHours();
var minutes=time.getMinutes();
var seconds=time.getSeconds();
document.write("<h5>" + date + ". " + lmonth);
document.write(" kl. " + hours + ":" + minutes + "</h5>");
</script>
</div>
        <div id="textbox">
<?php

$dir=$_SERVER['DOCUMENT_ROOT']."/verifyimg/";
$now=time();
$age=1;

if(is_dir($dir)) {
if($dh=opendir($dir)) {
while(($file=readdir($dh))!==false) {
if(preg_match("/^[0-9]{10}.jpeg$/", $file)) {
$stamp=substr($file, 0, 10);
if(($now-$stamp)>$age) { "<pre>File : ".$dir.$file."</pre>";
unlink($dir.$file); } } } } }


$im = ImageCreate(200, 40);
$white = ImageColorAllocate($im, 255, 255, 255);
$black = ImageColorAllocate($im, 120, 200, 68);
srand((double)microtime()*1000000);
$string = md5(rand(0,9999));
$string=substr($string,1,7);
$verification = $string;
ImageFill($im, 0, 0, $black);
ImageString($im, 4, 70, 10, $verification, $white);
while(file_exists($_SERVER['DOCUMENT_ROOT']."/verifyimg/".$now.".jpeg")) { $now++; }
Imagejpeg($im, "verifyimg/".$now.".jpeg");
ImageDestroy($im);

?>

<body>
<center>
<link rel='stylesheet' href='admin/style.css' type='text/css'>

<?php
include "admin/connect.php";
$s=$_SERVER["REMOTE_ADDR"];
$ipbancheck="SELECT * from gb_banip where IP='$s'";
$ipbancheck2=mysql_query($ipbancheck);
while($ipbancheck3=mysql_fetch_array($ipbancheck2))
{
  $IPBANNED=$ipbancheck3[IP];
}
if ($IPBANNED)
    {
      print "You have been banned from posting";
    }

else
  {
   
    if (!isset($_POST['submit']))
    {
    print "<table class='entry'  border='6'><tr class='row1'><td>";
    print "<form method='post' action='addentry.php' name='form'>";
    print "<b>Name:</b><br> <input type='text' name='name' size='40'><br>";
    print "<b>Country:</b><br><input type='text' name='country' size='40'><br>";
    print "<b>Homepage(include http://):</b><br><input type='text' name='homepage' size='40'><br>";
    print "<b>E-mail:</b><br><input type='text' name='email' size='40'><br>";
    print "<b>Aim:</b><br><input type='text' name='aim' size='40'><br>";
    print "<b>ICQ:</b><br><input type='text' name='icq' size='40'><br>";
    print "<b>Yahoo:</b><br><input type='text' name='yim' size='40'><br>";
    print "<b>MSN:</b><br><input type='text' name='msn' size='40'><br>";
    print "<b>Comment:</b><br>";
    print "<textarea rows='6' name='comment' cols='45'></textarea><br>";
    print"<input type='hidden' name='secretcode' value='$verification'>";
    print "Type in the image you see below: <input type='text' name='code' size='15'><br>"; 
print "<img src='verifyimg/".$now.".jpeg' border='0'><br><br>";
    print "<input type='submit' name='submit' value='submit'>";
    print "</form><br>";
    print "<center>Clickable Smilies</center>";
    print "<a onClick=\"addSmiley(':)')\"><img src='images/smile.gif'></a> ";
    print "<a onClick=\"addSmiley(':(')\"><img src='images/sad.gif'></a> ";
    print "<a onClick=\"addSmiley(';)')\"><img src='images/wink.gif'></a> ";
    print "<a onClick=\"addSmiley(';smirk')\"><img src='images/smirk.gif'></a> ";   
    print "<a onClick=\"addSmiley(':blush')\"><img src='images/blush.gif'></a> ";
    print "<a onClick=\"addSmiley(':angry')\"><img src='images/angry.gif'></a> ";
    print "<a onClick=\"addSmiley(':shocked')\"><img src='images/shocked.gif'></a> ";
    print "<a onClick=\"addSmiley(':cool')\"><img src='images/cool.gif'></a> ";
    print "<a onClick=\"addSmiley(':ninja')\"><img src='images/ninja.gif'></a> ";
    print "<a onClick=\"addSmiley('(heart)')\"><img src='images/heart.gif'></a> ";
    print "<a onClick=\"addSmiley('(!)')\"><img src='images/exclamation.gif'></a> ";
    print "<a onClick=\"addSmiley('(?)')\"><img src='images/question.gif'></a><br>";
    print "<a onclick=\"addSmiley(':{blink}')\"><img src='images/winking.gif'></a>";
    print "<A onclick=\"addSmiley('{clover}')\"><img src='images/clover.gif'></a>";
    print "<a onclick=\"addSmiley(':[glasses]')\"><img src='images/glasses.gif'></a>";
    print "<a onclick=\"addSmiley(':[barf]')\"><img src='images/barf.gif'></a>";
    print "<a onclick=\"addSmiley(':[reallymad]')\"><img src='images/mad.gif'></a>";
    print "<script language=\"JavaScript\" type=\"text/javascript\">\n";
    print "function addSmiley(textToAdd)\n";
    print "{\n";
    print "document.form.comment.value += textToAdd;";
    print "document.form.comment.focus();\n";
    print "}\n";
    print "</script>\n";
    print "<br><br>";
    print "<A href='bbcode.php' target='top'>BBCode instructions</a>";
  }

   


  else if (isset($_POST['submit']))
  {
    $name=$_POST['name'];
    $country=$_POST['country'];
    $email=$_POST['email'];
    $homepage=$_POST['homepage'];
    $aim=$_POST['aim'];
    $icq=$_POST['icq'];
    $yim=$_POST['yim'];
    $msn=$_POST['msn'];
    $comment=$_POST['comment'];
    $code=$_POST['code'];
    $secretcode=$_POST['secretcode'];
    if(!$name || !$comment)
    {
      print "<font color='red'>Name or comment not entered, please go back and sign again</font><br>";
    }
    else if($code!=$secretcode)
    {
      print "<font color='red'>Validation failed</font>";
    }
  else
    {
    $r=$_SERVER["REMOTE_ADDR"];
    $day=date("D M d, Y H:i:s");
    $timegone=date("U") ; //seconds since Jan 1st, 1970
    $putinguestbook="INSERT INTO gbook(name, country, mail, homepage, comment, realtime, aim, icq, yim, msn, time,IP) VALUES('$name','$country','$email','$homepage','$comment','$day','$aim','$icq','$yim','$msn','$timegone','$r')";
    mysql_query($putinguestbook);
    print "Thanks for posting, you will now be redirected <META HTTP-EQUIV = 'Refresh' Content = '2; URL =index.php'> ";
    }
  }

?>

</td></tr></table>

</center></body>
        </div>
        <link rel="stylesheet" type="text/css" href="http://lindquist.hotserv.dk/style/lindquist.css"></link>
        <div id="menu">
            <h1>menu</h1>
            <h2>
                <a href="http://lindquist.hotserv.dk/aboutus.php" alt="About Us">About Us</a><br />
                <a href="http://lindquist.hotserv.dk/gallery" alt="Pictures">Pictures</a><br />
                <a href="http://lindquist.hotserv.dk/links.php" alt="Links">Links</a><br />
                <a href="http://lindquist.hotserv.dk/gb" alt="Guestbook">Guestbook</a><br /><br />
                <a href="http://lindquist.hotserv.dk" alt="Frontpage">Back to Front</a><br /><br /><br />
                <a href="http://lindquist.hotserv.dk/gb/admin/" alt="Admin">Admin Area</a><br />
            </h2>
        </div>
    </body>
</html>
Avatar billede dwr Nybegynder
03. april 2007 - 11:17 #39
Kan se jeg skal have ryddet lidt op i indrykningerne efterhånden :p
Avatar billede johan.o Nybegynder
03. april 2007 - 11:19 #40
Du skal lige slette det her også, der hvor du har slettet echo :)

"<pre>File : ".$dir.$file."</pre>";

Slettes dine images så ?

Mvh. Johan
Avatar billede dwr Nybegynder
03. april 2007 - 11:28 #41
Har slettet det nu, men den sletter dem stadig ikke :(
Har også tjekket at der er rettigheder til det i mappen.
Avatar billede johan.o Nybegynder
03. april 2007 - 11:37 #42
Nå, men vi må jo først checke om der overhovedet kigges i den mappe vi håber :)

Sæt denne linje ind i 'toppen' -->

while(($file=readdir($dh))!==false) { echo "<pre>File : ".$dir.$file."</pre>";

istedet for denne -->

while(($file=readdir($dh))!==false) {

Så kan vi se hvilket directory og hvilke filer der findes.

Mvh. Johan
Avatar billede dwr Nybegynder
03. april 2007 - 11:50 #43
done..
Avatar billede johan.o Nybegynder
03. april 2007 - 11:53 #44
Og hvad er outputtet ?
Avatar billede dwr Nybegynder
03. april 2007 - 12:04 #45
Det kan jeg ikke se, da jeg ikke kan finde noget i kildekode til det... :s

Føler mig rimelig uvidende
Avatar billede dwr Nybegynder
03. april 2007 - 12:04 #46
Siden er her: http://lindquist.hotserv.dk/gb/addentry.php

Hvor bør jeg lede?
Avatar billede johan.o Nybegynder
03. april 2007 - 12:08 #47
Det skal du såmænd ikke gøre, det er jo sikkert fordi den aldrig 'kører' den linje :)

Problemet ligger åbenbart tidligere...derfor....

Skift 'toppen' ud med dette -->

if(!is_dir($dir)) { die("Ikke noget directory !"); } else {
if(!$dh=opendir($dir)) { die("Cant open directory !"); } else {
while(($file=readdir($dh))!==false) { echo "<pre>File : ".$file."</pre>";
if(preg_match("/^[0-9]{10}.jpeg$/", $file)) {
$stamp=substr($file, 0, 10);
if(($now-$stamp)>$age) {
unlink($dir.$file); } } } } }

Mvh. Johan
Avatar billede johan.o Nybegynder
03. april 2007 - 12:14 #48
Ahh...begynder at se hvor problemet er, jeg tror ikke du har tastet den korrekte path ind til verifyimg directory.....

prøv med denne linje i starten -->

$dir=$_SERVER['DOCUMENT_ROOT']."/gb/verifyimg/";

Mvh. Johan
Avatar billede johan.o Nybegynder
03. april 2007 - 12:22 #49
Nåh, men nu må jeg vist også se at komme videre med dagens program :)

Jeg kigger tilbage senere.

Mvh. Johan
Avatar billede dwr Nybegynder
03. april 2007 - 12:53 #50
Suk... Det var pinligt :(

Nåja, men nu er det da løst. Jeg takker endnu en gang for hjælpen - det var suverænt.
Opret et svar når du lyster :)

Håber jeg kan hjælpe dig en ande gang, hvis jeg ved noget du skal vide :p

Mvh
Rasmus Lindquist
Avatar billede johan.o Nybegynder
03. april 2007 - 22:33 #51
Ikke spor pinligt :), jeg kan ikke huske hvor mange gange jeg har siddet og stirret i timevis på kode, for så endelig at opdage den mest simple 'fejl'....men det er mange gange :)

Glad for at kunne hjælpe.

Mvh. Johan
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