Hallo,
zum einen kannst du zum übergeben der URL auch urlencode() benutzen, damit die leerzeichen und "&" zeichen entsprechend übersetzt werden.
als nächstes solltest du
$checked=1;
foreach ($_GET as $key => $var)
{
if (strlen($var)>50){$checked=0;}
if (eregi("[\]", $var)){$checked=0;}
if (eregi("[<]", $var)){$checked=0;}
if (eregi("[>]", $var)){$checked=0;}
if (eregi("[&]", $var)){$checked=0;}
if (eregi("[%]", $var)){$checked=0;}
if (eregi("[§]", $var)){$checked=0;}
if (eregi("[$]", $var)){$checked=0;}
if (eregi("[?]", $var)){$checked=0;}
if (eregi("[+]", $var)){$checked=0;}
if (eregi("[*]", $var)){$checked=0;}
if (eregi("[~]", $var)){$checked=0;}
if (eregi("[#]", $var)){$checked=0;}
if (eregi("[']", $var)){$checked=0;}
if (eregi("[\"]", $var)){$checked=0;}
}
\\ Hier irgendwas ausführen falls $checked==0 ist. Z.B weiterleitung auf ne Fehlerseite oder so.
es ist ne ganz simple Sache, habe ich auch nicht selbst gebaut, und geht auch etwas schicker, aber eigentlich völlig ausreichend
Um den String zu übergeben, ungeachtet dessen was drinsteht kannst du folgendes machen:
<script type="text/javascript"><!--
var keyStr = "ABCDEFGHIJKLMNOP" +
"QRSTUVWXYZabcdef" +
"ghijklmnopqrstuv" +
"wxyz0123456789+/" +
"=";
function encode64(input) {
var output = "";
var chr1, chr2, chr3 = "";
var enc1, enc2, enc3, enc4 = "";
var i = 0;
do {
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = input.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}
output = output +
keyStr.charAt(enc1) +
keyStr.charAt(enc2) +
keyStr.charAt(enc3) +
keyStr.charAt(enc4);
chr1 = chr2 = chr3 = "";
enc1 = enc2 = enc3 = enc4 = "";
} while (i < input.length);
return output;
}
function decode64(input) {
var output = "";
var chr1, chr2, chr3 = "";
var enc1, enc2, enc3, enc4 = "";
var i = 0;
// remove all characters that are not A-Z, a-z, 0-9, +, /, or =
var base64test = /[^A-Za-z0-9\+\/\=]/g;
if (base64test.exec(input)) {
alert("There were invalid base64 characters in the input text.\n" +
"Valid base64 characters are A-Z, a-z, 0-9, '+', '/', and '='\n" +
"Expect errors in decoding.");
}
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
do {
enc1 = keyStr.indexOf(input.charAt(i++));
enc2 = keyStr.indexOf(input.charAt(i++));
enc3 = keyStr.indexOf(input.charAt(i++));
enc4 = keyStr.indexOf(input.charAt(i++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
output = output + String.fromCharCode(chr1);
if (enc3 != 64) {
output = output + String.fromCharCode(chr2);
}
if (enc4 != 64) {
output = output + String.fromCharCode(chr3);
}
chr1 = chr2 = chr3 = "";
enc1 = enc2 = enc3 = enc4 = "";
} while (i < input.length);
return output;
}
//--></script>
Dann im Formular:
onClick="document.base64Form.theText.value=encode64(document.base64Form.theText.value);"
einbauen.
Aus "AP7 / Samstag" wird "QVA3IC8gU2Ftc3RhZw=="
Zurückwandeln einfach mit php oder der entsprechenden Javascript function decode64(input):
$kurstag=base64_decode($_GET['kurstag']);
dann kann man auch benutzen:
<input type="text" name="kurstag" value="<?php echo $kurstag; ?>">
Gruss
Marcus