On Friday 19 October 2007 11:12, Jonathan wrote:
----- Original Message ----- From: "Jamie O'Keefe" <jokeefe@jamesokeefe.org> To: <zope@zope.org> Sent: Friday, October 19, 2007 11:05 AM Subject: Re: [Zope] Zope database file grows when no one is modifying it
Any suggestions as to how to thwart such attempts besides requiring user accounts for even the most minor edit and then remaining vigilant about who get accounts?
Not a zope-based solution, but how about using 'captcha' images if spambots are your problem?
Jonathan
_______________________________________________ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev )
or for a Zope based solution (and if you have PIL and PIL fonts installed) use the following as an external method and stick the call to the method inside your form. Of course instead of putting the random number in a hidden field you could also write it to the current directory as a document and then get the value from the document when you process it, by the way you have to create your code to verify the image number where ever you process the form. In the example below I compare cost to picnum. There are also features in PIL to add effects to the image if you want slant, swirl or anything. Thomas *************************************************** from PIL import Image,ImageDraw,ImageFont import random import os from StringIO import StringIO from OFS.Image import manage_addImage # CREATED AUGUST 8, 2007 - Thomas Bennett # REQUIREMENTS # PIL FONTS FROM http://effbot.org/pil/pilfonts.zip # PIL FROM http://www.pythonware.com/products/pil/ def random_number_image(self): #GENERATE A RANDOM NUMBER OF 5 DIGITS mynumtext = str(random.randrange(10000,99999,1)) my_image_id = "number.jpg" #DEFINE FONT PATH AND NAME fontpath="/usr/lib/python2.4/site-packages/pilfonts" fontname="ncenB14.pil" # CREATE A TEXT IMAGE USING MYNUMTEXT textImg = Image.new('RGB',(75,25),(56,56,50)) # INSTANTIATE A NEW IMAGE (a dark gray box) tmpDraw = ImageDraw.Draw(textImg) # DRAW THE IMAGE INTO TEMP textFont = ImageFont.load(os.path.join(fontpath,fontname)) # LOAD A FONT FOR THE IMAGE tmpDraw.text((15,1), mynumtext, font = textFont) # PLACE TEXT IN NEW IMAGE # PUT THE IMAGE INTO MEMORY AND SAVE IMAGE TO MEMORY imageFile = StringIO() textImg.save(imageFile,"JPEG") # IF THERE IS A NUMBER.JPG IN THE CURRETN DIRECTORY, DELETE IT SO UNDO WON'T BUILD UP if my_image_id in self.objectIds(): self.manage_delObjects([my_image_id]) manage_addImage(self,"number.jpg",imageFile) # WRITE THE IMAGE AND FORM CODE TO THE PAGE text = '\n<input type="hidden" name="cost" value="%s">' %mynumtext text = text+'\n<font face="Verdana, Arial, Helvetica, sans-serif" size="1">\n<b>Please enter the number pictured below.</b></font>' text = text+'<br>\n<img src="%s" alt="%s"/><input type=text name="picnum" value="">\n<br />' %(my_image_id,mynumtext) return text ************************************************************************* -- ==================================================================== Thomas McMillan Grant Bennett Appalachian State University Operations & Systems Analyst P O Box 32026 University Library Boone, North Carolina 28608 (828) 262 6587 They say a picture is worth a thousand words. As videos could be 25 pictures per second and might last several minutes, how many words is that? - Linux Journal, July 2007 Library Systems Help Desk: http://www.library.appstate.edu/help/ ====================================================================