The only solutions I've discovered is: ( for less secure tables) 1. Crypt the password 2. Put it into directory not in the public domain 3. Set the permissions set only for your scripts.
( for more secure tables) 1. I would gather sensitive info last if possible. 2. Do not put the password on the server. 3. It would have to gathered with a form and you have to have ssl. Then track the password and page state with javascript. Always use post in your forms method attribute. Any links on your page should have a target attribut of _blank so as not to lose tracking or display the password in the address bar. If you find any other solutions please let me know. Here is some javascript that I use for maintaining state in my scripts. Alter the script to your own variables where applicable. ******************* Maintaining page state ************************** function setpage(){ // append the links with thier email //document.write(document.links.length+" links <BR>"); var sep = "&"; for(var i=0;i<document.links.length;i++){ if(document.links[i].href.indexOf("?") == -1){ sep = "?"; } else{sep = "&"; } if((document.links[i].href.indexOf("paypal") == -1) && (document.links[i].href.indexOf("UpSeason") == -1)){ document.links[i].href=document.links[i].href+sep+"Cemail="+Cemail+"& demo="+demo+"&season="+season; } } for(var i=0;i<document.forms.length;i++){ if(document.forms[i]){ for(var k=0;k<document.forms[i].elements.length;k++){ if(document.forms[i].elements[k].name == "Cemail"){ if(Cemail == ""){Cemail = document.forms[i].Cemail.value;} document.forms[i].Cemail.value = Cemail; } if(document.forms[i].elements[k].name == "season"){ if(season == ""){season = document.forms[i].season.value;} document.forms[i].season.value = season; } if(document.forms[i].elements[k].name == "demo"){ //try to set the value first if it's empty if(demo == ""){demo = document.forms[i].demo.value;} document.forms[i].demo.value = demo; } } } } } **************************** end ********************************** CGI.pm also maintains state if a variable is repeatedly called. Also you would have to have a separate table for each user.