Hallo forumsgemeinde,
ich habe da ein kleines problem mit cookies, sofern ich diese gemeinsam mit frames und dem NN einsetzte...die konstellation ist wie folgt:
Also erstmal was grundsätliches zu dem Thema:
Beim Netsi und dem IE werden die cookies etwas anders verwaltet. eine ausführliche doku zu dem thema findest du auf den netscape-developers server. ich habe dieses problem umgangen in dem ich die cookies in das framset fenster geschrieben habe. zusätzlich ist noch zu sagen das ich mit den onLoad und onUnload events immer etwas probleme bei dem ns hatte.
das nachfolgende script sollte hauptsächllich das problem lösen das der anwender bei verschiedenen kontakt formularen nicht immer wieder sein namen eingeben musste. es funktioniert aber inerhalb eines framsets 100%tig.
Zum Script: das formular hies allg. es wird über onLoad und ein Send button gesteuert. es enthält zusätzlich noch eine komplette formular überprüfung. laufend kannst du dir das auf www.walter-lohse.de anschauen.
<script language="JavaScript">
var cont="0123456789/-"
var cont2="01234567890.@_abcdefghijklmnopqrstuvwxyz"
var nix="keine#nicht vorhanden#-#%#"
// Ist Element ausgefüllt oder gecheckt wir Forces gefordert
function contex_check(element,forces) {
test = plausi_check(element,false)
if (test == "") test = plausi_check(forces,true)
if (test == "-") test = ""
return test
}
// Ist force gesetzt wird eine leeres Feld als Fehlerhafte eingabe gewehrtet
function plausi_check(element,force) {
if (element.type == "text") {return inhalt_ana(element.name,element.value,force)}
if (element.type == "radio") { if (element.checked == true) return "";
else return "-"; }
if (element.type == "checkbox") { if (element.checked == true) return "";
else return "-";
}
return "";
}
function inhalt_ana(wie,was,soll) {
if (was == "" && soll == true) return "\n"+wie+" wurde nicht ausgefüllt."
if (was == "") return ""
if (wie =="Nachname") return check_name(was,3,wie) ;
if (wie =="Vorname") return check_name(was,2,wie) ;
if (wie =="Email")return check_email(was) ;
if (wie =="Telefon")return check_number(was,wie) ;
if (wie =="Betreff")return check_name(was,2,wie) ;
if (wie =="Strasse")return check_name(was,3,wie) ;
if (wie =="PLZ") return check_number(was,5,wie) ;
if (wie =="Ort") return check_name(was,2,wie) ;
if (wie =="Nachricht") return check_name(was,5,wie) ;
return "" ;
}
function check_name(was,min,wie) {
if (was.length < min) return "\n"+wie+": Eingabe ist zu kurz um sinnvoll zu sein.";
return "" ;
}
function check_email(was) {
if ( was.indexOf("@") == -1 ) return "\n"+was+": Ist keine Gültige E-Mail Adresse";
if ( was.substring(0,was.indexOf("@")).length < 3 was.substring(was.indexOf("@"),was.length).length < 5 was.substring(was.indexOf("@"),was.length).indexOf(".") == -1 ) return "\n"+was+": Fehlerhafte Email-Adresse.";
x = illegal(was.toLowerCase(),cont2);
if ( x != "" ) return "\n"+wie+": Email enthält folgende ungültige Zeichen: \n\t "+x;
return ""
}
function check_number(was,min,wie) {
if (was.length < min ) return "\n"+wie+": Eingabe ist zu kurz um sinnvoll zu sein.";
x = illegal(was,cont);
if ( x != "" ) return "\n"+wie+": Eingabe enthält folgende ungültige Zeichen: \n\t "+x;
return ""
}
function illegal(test,mit) {
var x = ""
for (var a=0 ; a<= test.length ; a++ ) {
if (mit.indexOf(test.charAt(a)) == -1) x = x + test.charAt(a)
}
return x
}
function doit(fail_txt) {
var err_header = "<HTML><HEAD></HEAD><BODY><b>Bei der analyse Ihrer Eingabe traten folgende Fehler auf:<br><br></b>";
var err_header ="Es traten in Ihrer Eingabe folgende Fehler auf:\n\n"
err = contex_check(document.allg.kontakt[0],document.allg.Email);
err = err +plausi_check(document.allg.Nachname,true)
err = err +contex_check(document.allg.Anrede[0],document.allg.Vorname)
err = err + contex_check(document.allg.Anrede[1],document.allg.Vorname)
err = err + contex_check(document.allg.kontakt[1],document.allg.Telefon)
err = err +contex_check(document.allg.kontakt[2],document.allg.Strasse)
err = err +contex_check(document.allg.kontakt[2],document.allg.Hausnummer)
err = err + contex_check(document.allg.kontakt[2],document.allg.Ort)
err = err +contex_check(document.allg.kontakt[2],document.allg.PLZ)
err =err + plausi_check(document.allg.Betreff,true)
err = err +plausi_check(document.allg.Nachricht,true)
if (err != "") {
alert(err_header+err+fail_txt)
return "-"
}
if (err == "" ) return ""
}
function do_send() {
err = doit("\n Das Formular wurde nicht gesendet !")
if (err == "") {
document.allg.submit();
write_cookie();
}
}
function get_cookie()
{
var Wert = "";
if(parent.document.cookie)
{
Wertstart = parent.document.cookie.indexOf("=") + 1;
Wertende = parent.document.cookie.indexOf(";");
if(Wertende == -1) Wertende = parent.document.cookie.length;
Wert = parent.document.cookie.substring(Wertstart,Wertende);
}
return Wert;
}
function output_cookie(was) {
fill_in = was.split("#");
if ( fill_in.length < 9 ) return;
document.allg.Anrede[0].checked = ( fill_in[0] == "Herr" ) ? true : false ;
document.allg.Anrede[1].checked = ( fill_in[0] == "Frau" ) ? true : false ;
document.allg.Anrede[2].checked = ( fill_in[0] == "Firma" ) ? true : false ;
document.allg.Vorname.value = fill_in[1]
document.allg.Nachname.value = fill_in[2]
document.allg.Email.value = fill_in[3]
document.allg.Telefon.value = fill_in[4]
document.allg.Strasse.value = fill_in[5]
document.allg.Hausnummer.value = fill_in[6]
document.allg.Ort.value = fill_in[7]
document.allg.PLZ.value = fill_in[8]
document.allg.titel.value = fill_in[9]
}
function write_cookie()
{
was = ( document.allg.Anrede[0].checked == true ) ? "Herr#" : "";
was = ( document.allg.Anrede[1].checked == true) ? "Frau#" : was;
was = ( document.allg.Anrede[2].checked == true ) ? "Firma#" : was;
was = was + document.allg.Vorname.value +"#";
was = was + document.allg.Nachname.value +"#";
was = was + document.allg.Email.value +"#";
was = was + document.allg.Telefon.value +"#";
was = was + document.allg.Strasse.value +"#";
was = was + document.allg.Hausnummer.value +"#";
was = was + document.allg.Ort.value +"#";
was = was + document.allg.PLZ.value +"#";
was = was + document.allg.titel.value +"#";
var jetzt = new Date();
var Auszeit = new Date(jetzt.getTime() + 1000*60*60*24*730 );
parent.document.cookie = "Benutzer="+was+"; expires="+Auszeit.toGMTString()+";";
}
function do_save()
{
err = doit("\n Die Daten wurden nicht gespeichert !")
if (err == "") write_cookie()
}
function do_load()
{
load = get_cookie()
if (load != "") output_cookie(load)
}
</script>
so ich hoffe ich kriege von niemanden mecker weil ich keine lust hatte das ding auseinander zu klabüstern..
Timo