On Friday 19 October 2007 11:12, Jonathan wrote:
> ----- Original Message -----
> From: "Jamie O'Keefe" <[EMAIL PROTECTED]>
> 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/
====================================================================
_______________________________________________
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 )

Reply via email to