Just starting out? Need help? Post your questions and find answers here.
			
		
		
			
				
								griz 							 
						Enthusiast 			
		Posts:  167  		Joined:  Sun Jun 29, 2003 7:32 pm 		
		
											Location:  Canada 
							
						
		 
		
						
						
													
							
						
									
						Post 
					 
								by griz   »  Thu Jul 08, 2004 7:06 am 
			
			
			
			
			Hi guys,
I would like to write a CGI utility that can pull POST values from an html form.  I have done this with GET and have searched through the forums for some simple examples without luck.  Can any of you who are experienced with PB-CGI-POST provide a simple example? How can I retrieve the "userid" and "password" values below?
Code: Select all 
<html><body><center>
<FORM METHOD="POST" ACTION="checker.exe" ENCTYPE="application/x-www-form-urlencoded">
User ID : 
<INPUT TYPE="text" NAME="userid" VALUE="" SIZE="20" MAXLENGTH="100"> 
<p>
Password : 
<INPUT TYPE="password" NAME="password" VALUE="" SIZE="20" MAXLENGTH="100"> 
<p>
<INPUT TYPE="submit" NAME="submit" VALUE="Submit">
</form>
</center></body></html> 
			
			
									
									
						 
		 
				
		
		 
	 
				
			
		
		
			
				
																			
								El_Choni 							 
						TailBite Expert 			
		Posts:  1007  		Joined:  Fri Apr 25, 2003 6:09 pm 		
		
											Location:  Spain 
							
						
		 
		
						
						
						 
			 
													
							
						
									
						Post 
					 
								by El_Choni   »  Thu Jul 08, 2004 11:57 am 
			
			
			
			
			Simple example, tested with Apache 2.0.50 (compile in console mode to your cgi-bin dir):
Code: Select all 
hInput = GetStdHandle_(#STD_INPUT_HANDLE)
SetConsoleMode_(hInput, #ENABLE_LINE_INPUT|#ENABLE_ECHO_INPUT|#ENABLE_PROCESSED_INPUT)
BufferStep = 1024
BufferSize = BufferStep
*Buffer = AllocateMemory(BufferSize)
*BufferOffset = *Buffer
While ReadFile_(hInput, *BufferOffset, BufferStep-1, @bRead, 0)
  BufferSize+bRead
  *Buffer = ReAllocateMemory(*Buffer, BufferSize)
  *BufferOffset = *Buffer+BufferSize-BufferStep
Wend
Input$ = PeekS(*Buffer)
FreeMemory(*Buffer)
CloseHandle_(hInput)
hOutput = GetStdHandle_(#STD_OUTPUT_HANDLE)
HttpAnswer$ = "Content-type: text/html"+Chr(10)+Chr(13)+Chr(10)+Chr(13)+"<html><header><title>Answer from CGI</title></header><body>Hi, received your data:<br>"
HttpAnswer$+StringField(Input$, 1, "&")+"<br>"+StringField(Input$, 2, "&")
HttpAnswer$+"</body></html>"
WriteFile_(hOutput, @HttpAnswer$, Len(HttpAnswer$), @Written, 0)
CloseHandle_(hOutput)
 
			
			
													
					Last edited by 
El_Choni  on Thu Jul 08, 2004 6:05 pm, edited 1 time in total.
									
 
			
									El_Choni
						 
		 
				
		
		 
	 
	
						
		
		
			
				
								Paul 							 
						PureBasic Expert 			
		Posts:  1285  		Joined:  Fri Apr 25, 2003 4:34 pm 		
		
																Location:  Canada 
							
							
				Contact: 
				
			 
				
		 
		
						
						
						 
			 
													
							
						
									
						Post 
					 
								by Paul   »  Thu Jul 08, 2004 4:50 pm 
			
			
			
			
			Nice code El_Choni 
 
Just a quick note, StringField index starts at 1 so you need to adjust this line to...
Code: Select all 
HttpAnswer$+StringField(Input$, 1, "&")+"<br>"+StringField(Input$, 2, "&") 
			
			
									
									
						 
		 
				
		
		 
	 
	
						
		
		
			
				
																			
								El_Choni 							 
						TailBite Expert 			
		Posts:  1007  		Joined:  Fri Apr 25, 2003 6:09 pm 		
		
											Location:  Spain 
							
						
		 
		
						
						
						 
			 
													
							
						
									
						Post 
					 
								by El_Choni   »  Thu Jul 08, 2004 6:08 pm 
			
			
			
			
			Better now, thx Paul:
Code: Select all 
hInput = GetStdHandle_(#STD_INPUT_HANDLE)
SetConsoleMode_(hInput, #ENABLE_LINE_INPUT|#ENABLE_ECHO_INPUT|#ENABLE_PROCESSED_INPUT)
*ContentLength = AllocateMemory(128)
ContentLength = Val(PeekS(*ContentLength, GetEnvironmentVariable_("CONTENT_LENGTH", *ContentLength, 128)))
FreeMemory(*ContentLength)
*Buffer = AllocateMemory(ContentLength)
ReadFile_(hInput, *Buffer, ContentLength, @bRead, 0)
Input$ = PeekS(*Buffer)
FreeMemory(*Buffer)
CloseHandle_(hInput)
hOutput = GetStdHandle_(#STD_OUTPUT_HANDLE)
HttpAnswer$ = "Content-type: text/html"+Chr(10)+Chr(13)+Chr(10)+Chr(13)+"<html><header><title>Answer from CGI</title></header><body>Hi, received your data:<br>"
HttpAnswer$+StringField(StringField(Input$, 1, "&"), 1, "=")+": "+StringField(StringField(Input$, 1, "&"), 2, "=")+"<br>"+StringField(StringField(Input$, 2, "&"), 1, "=")+": "+StringField(StringField(Input$, 2, "&"), 2, "=")
HttpAnswer$+"</body></html>"
WriteFile_(hOutput, @HttpAnswer$, Len(HttpAnswer$), @Written, 0)
CloseHandle_(hOutput) 
 
			
			
									
									El_Choni
						 
		 
				
		
		 
	 
	
						
		
		
			
				
								griz 							 
						Enthusiast 			
		Posts:  167  		Joined:  Sun Jun 29, 2003 7:32 pm 		
		
											Location:  Canada 
							
						
		 
		
						
						
						 
			 
													
							
						
									
						Post 
					 
								by griz   »  Sat Jul 10, 2004 5:03 am 
			
			
			
			
			Thank you very much El_Choni!
This is exactly what I was looking for.  
 
			
			
									
									
						 
		 
				
		
		 
	 
	
						
		
		
			
				
																			
								bluejoke 							 
						User 			
		Posts:  11  		Joined:  Thu Nov 11, 2004 4:30 pm 		
		
																Location:  Guenzburg, Bavaria, Germany 
							
							
				Contact: 
				
			 
				
		 
		
						
						
						 
			 
													
							
						
									
						Post 
					 
								by bluejoke   »  Sun May 22, 2005 9:50 am 
			
			
			
			
			Muchas gracias El_Choni! Thanks for the example, I would never get it right, to pass data from my cgi-app to apache, windows-version, without getting this ***** 500 error. 
 
Hasta luego, 
Simon Ruf
			
			
									
									
						 
		 
				
		
		 
	 
	
						
		
		
			
				
								NoahPhense 							 
						Addict 			
		Posts:  1999  		Joined:  Thu Oct 16, 2003 8:30 pm 		
		
											Location:  North Florida 
							
						
		 
		
						
						
						 
			 
													
							
						
									
						Post 
					 
								by NoahPhense   »  Sun May 22, 2005 1:52 pm 
			
			
			
			
			Thanks guys.. this will be VERY hand for my server.. 
 
- np