[ASP] Unieke code in afbeelding

Pagina: 1
Acties:

  • Dutch_guy
  • Registratie: September 2001
  • Laatst online: 20-04 14:47
Ik ben bezig met het maken van functionaliteit om dynamisch een afbeelding te genereren die een random code produceert. Dit om automatische scripts het onmogelijk te maken om mijn formulier automatisch te kunnen submitten.

Ik gebruik hiervoor het component ASPJPEG om het plaatje te genereren. Deze ondersteunt mijn hoster ook, maar ik kan daar verder geen andere componenten installeren.

Met de volgende code genereer ik de afbeelding met daarin de unieke code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!--#include file="includes/code.asp" -->

<%
Response.Expires = 0

Set Jpeg  = Server.CreateObject("Persits.Jpeg")

Jpeg.Open Server.MapPath("images/code.gif")

Jpeg.Canvas.Font.Color = &HFF0000
Jpeg.Canvas.Font.Family = "Verdana"
Jpeg.Canvas.Font.Bold = True
Jpeg.Canvas.Font.Quality = 4
Jpeg.Canvas.Font.Size = 20
Jpeg.Canvas.Print 17, 1, random_number

Jpeg.SendBinary
%>


Deze code streamt het plaatje naar de browser zonder deze fysiek op te slaan.

De include file "code.asp" genereert een random nummer als volgt:

code:
1
2
3
4
5
6
7
8
9
10
<%

lowestNumber  = 10000
highestNumber = 99999

randomize

random_number = Int((highestNumber - lowestNumber + 1) * Rnd + lowestNumber)

%>


Op een andere pagina toon ik dit als volgt:

Afbeeldingslocatie: http://www.xs4all.nl/~uwsite/got/code.gif

Bij iedere refresh verandert het nummer.

Nu is het de bedoeling dat men de code invoert in het textveld en er gekeken wordt of ze gelijk zijn aan elkaar.

Het probleem is dat ik het unieke nummer dat in het plaatje staat niet uitgelezen krijg om zodoende te kunnen vergelijk of het ingevoerde gelijk is aan datgeen op het plaatje.

Als ik simpelweg de variabele random_number uitlees op die pagina, dan zijn ze niet gelijk aangezien die dan weer een nieuw nummer genereert.

Iemand een idee ?

[ Voor 5% gewijzigd door Dutch_guy op 18-02-2005 11:47 ]

Pay peanuts get monkeys !


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 09:48

Creepy

Tactical Espionage Splatterer

Sla het nummer op in een sessie?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Sla het ding na het genereren op in een session variabele? Dan controleer je de waarde in je sessie bij het op versturen klikken en dan ben je volgens mij 'in business'.

edit:
damn, Creepy beat me to it

[ Voor 15% gewijzigd door OZ-Gump op 18-02-2005 11:49 ]

My personal website


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

cookies en input type='hidden' is natuurlijk geen oplossing, want dan zou een autosubmitter dat ook kunnen uitlezen... dus je moet de nummers serverside bijhouden.
Volgens mij kom je dan al vrij snel uit op sessions, hoe werkt dat in asp?
Of je zou ook een bestand kunnen bijhouden, waarin je per ip-adres opslaat welk random nummer je als laatste naar dat ip-adres hebt gestuurd. Als de user dan zijn code submit, vergelijk je dat met het nummer in het bestand.
Kweet alleen niet hoe proxy-servers daarover zullen denken...

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • Dutch_guy
  • Registratie: September 2001
  • Laatst online: 20-04 14:47
Een sessie variabele was ik al mee aan de gang gegaan, maar toch genereert die iedere keer een nieuwe waarde en niet diegene uit het plaatje. Hij toont steeds het voorgaande unieke nummer.

Hidden inputs en de code meesturen in de url zijn inderdaad in dit geval geen goede opties, dan gaat het hele effect verloren.

Pay peanuts get monkeys !


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 20:31

mulder

ik spuug op het trottoir

je genereert het nummer, stop het in de sessie en genereert het plaatje?

oogjes open, snaveltjes dicht


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 09:28

TeeDee

CQB 241

Dutch_guy schreef op vrijdag 18 februari 2005 @ 11:55:
Een sessie variabele was ik al mee aan de gang gegaan, maar toch genereert die iedere keer een nieuwe waarde en niet diegene uit het plaatje. Hij toont steeds het voorgaande unieke nummer.

Hidden inputs en de code meesturen in de url zijn inderdaad in dit geval geen goede opties, dan gaat het hele effect verloren.
Dus jij gaat mij vertellen dat als je
code:
1
2
3
4
5
6
7
8
<%
lowestNumber  = 10000
highestNumber = 99999
randomize
session("random") = Int((highestNumber - lowestNumber + 1) * Rnd + lowestNumber)

' voer hier de code uit om de code op het image te plakken uit
%>

niet werkt?

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Devion
  • Registratie: Januari 2000
  • Laatst online: 08-01 16:02

Devion

Space for rent ;-)

of anders gooi je het wel in een input hidden maar met een hash (lees: MD5/SHA) eroverheen?

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Als je de goede volgorde van werken hebt, kun je 't juiste nummer in de sessie krijgen. Zoals Don Facundo en TeeDee ook al aangeven: genereer het numemr, stop dat nummer in een sessie variabele en genereer het plaatje, dat moet werken. Bij het klikken controleer je de waarde uit de session.

Let wel op dat je niet een nieuw nummer genereert bij de page-load van de pagina die volgt op deze pagina, anders past deze misschien de session variabele aan voor jij aan de controle toekomt.

[ Voor 6% gewijzigd door OZ-Gump op 18-02-2005 12:02 ]

My personal website


  • Dutch_guy
  • Registratie: September 2001
  • Laatst online: 20-04 14:47
De goede volgorde was in dit geval inderdaad het probleem.

Ik heb het nu als volgt opgelost:

code:
1
2
3
4
5
6
7
8
<%
lowestNumber  = 10000
highestNumber = 99999 

randomize

Session("random_number") = Int((highestNumber - lowestNumber + 1) * Rnd + lowestNumber)
%>


Plaatje genereren:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%
Response.Expires = 0

Set Jpeg  = Server.CreateObject("Persits.Jpeg")

Jpeg.Open Server.MapPath("images/code.gif")

Jpeg.Canvas.Font.Color = &HFF0000
Jpeg.Canvas.Font.Family = "Verdana"
Jpeg.Canvas.Font.Bold = True
Jpeg.Canvas.Font.Quality = 4
Jpeg.Canvas.Font.Size = 20
Jpeg.Canvas.Print 17, 1, Session("random_number")

Jpeg.SendBinary
%>


Vervolgens de sessie variabele opvragen in de pagina waar het plaatje wordt weergegeven en het werkt. :)

Thanks!

Pay peanuts get monkeys !

Pagina: 1