Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Java + Formular + Weiterleitung
Frage
Ich schreibe gerade einen JS um die daten die im Forumlar leiste und dem feld change angegeben werden auszuwerten und je nach eingabe eine seite zu laden. aba irgendwie kriege ich das nicht hin und ich habe auch noch ein fehler im script.
[code]<script language=javascript>
function check() {
if (document.leiste.change == "")
{
parent.haupt.location.href="main.php?style=<?php echo"$style"; ?>";
}
else
{
var drin = document.leiste.change;
var check = drin.split("");
if (check[1] == "w" AND check[2] == "w" AND check[3] == "w")
{
parent.haupt.location.href="main.php?goto="+ drin +"&style=<?php echo"$style"; ?>";
}
}
</script>[/code]
Soweit der JS script und jetzt das formular
[code]<form name=leiste action="" onsubmit="check();"><input type=text name=change size=15 style="position:absolute;top:88px;left:79px;font-size:14px;width:350px;height:22px;padding-top:3px;border:0;" value=Arbeitsplatz><input type=image src=../style/images<?php echo"$style"; ?>/wechsel.jpg style="position:absolute;top:86px;left:491px;"></form>
[/code]
Wäre nett wenn mir einer helfen könnte
mfg
Fabi15
Antwort 1 von rabies
Hi,
Das soweit zum Script-Teil.
- Es fehlte die schließende Klammer der Function.
- Der logische Operator 'AND' ist - soweit ich weiß - in JavaScript nicht vorhanden. && bedeutet in diesem Falle aber 'AND'.
- Wenn Du die Werte eines Input-Feldes abfragen möchtest, musst Du noch
- Bei der if-Abfrage mit
Zum Formular:
Du solltest prinzipiell immer die Attribute method (ich habe das jetzt hier einmal auf "post" gesetzt) und action korrekt angeben.
Wie mir scheint, versuchst Du $style dann direkt aus der URL zu holen. Du solltest an dieser Stelle
--rabies.
<script language=javascript>
function check() {
if (document.leiste.change.value == "")
{
parent.haupt.location.href="main.php?style=<?php echo"$style"; ?>";
}
else
{
var drin = document.leiste.change.value;
var check = drin.split("");
if (check[0] == "w" && check[1] == "w" && check[2] == "w")
{
parent.haupt.location.href="main.php?goto="+ drin +"&style=<?php echo"$style"; ?>";
}
}
}
</script>
Das soweit zum Script-Teil.
- Es fehlte die schließende Klammer der Function.
- Der logische Operator 'AND' ist - soweit ich weiß - in JavaScript nicht vorhanden. && bedeutet in diesem Falle aber 'AND'.
- Wenn Du die Werte eines Input-Feldes abfragen möchtest, musst Du noch
.value dranhängen. (Beispiel: Nicht document.leiste.change sondern document.leiste.change.value)- Bei der if-Abfrage mit
check[1] usw. war ich mir nicht sicher. Aber Du willst hier sicher überprüfen, ob die ersten drei Buchstaben von document.leiste.change.value w, w und w sind, richtig? Arrays, solche wie sie split zurückgibt, fangen bei 0 an. Dementsprechend hab ich die if-Abfrage auch abgeändert. Zum Formular:
<form name="leiste" action="HIER_DATEI_ANGEBEN_DIE_DAS_FORM_VERARBEITET" onsubmit="check()" method="post">
<input type="text" name="change" size="15" value="Arbeitsplatz">
<input type="image" src="../style/images<?php echo "$style"; ?>/wechsel.jpg">
</form>Du solltest prinzipiell immer die Attribute method (ich habe das jetzt hier einmal auf "post" gesetzt) und action korrekt angeben.
Wie mir scheint, versuchst Du $style dann direkt aus der URL zu holen. Du solltest an dieser Stelle
$_GET['style'] oder, wenn die Variable per POST-Methode übergeben wird, $_POST['style'] verwenden. --rabies.
Antwort 2 von rfb
<script language=javascript>ist nicht valide, ersetze dies durch <script type="text/javascript">Du solltest generell Anführungszeichen um Attribute in HTML-Tags setzen, da das Weglassen leicht zu Codefehlern führt.
if (check[0] == "w" && check[1] == "w" && check[2] == "w")das Script bricht an dieser Stelle ab, wenn weniger als 3 Zeichen eingegeben wurden.Sinnvoller ist die Abfrage mit indexOf()
Außerdem wäre eine Umwandlung der Eingabe in entweder nur Groß- oder nur Kleinbuchstaben sinnvoll.
Wie immer stellt sich bei der Verwendung von JavaScript die Frage aller Fragen: Was wenn JavaScript deaktiviert ist?
Antwort 3 von Fabi15
danke danke habe alles mal probiert funktioniert aba trotzdem nicht.
ich poste jetzt mal den ganzen script der mit dem formular zu tun hat :
ich hoffe ihr könnt mir helfen
schon mal thx
mfg
Fabi15
ich poste jetzt mal den ganzen script der mit dem formular zu tun hat :
<?php
$style = $_GET[style];
print ("<html><head><title>B-Side</title><link rel=stylesheet type=text/css href=../style/images$style/main.css><script language=javascript src=../data/popup.js></script><script language=javascript src=../data/bild.js></script>");
print ("</head><body>");
?>
<script language=javascript>
function check() {
if (document.leiste.change.value == "")
{
parent.haupt.location.href="main.php?style=<?php echo"$style"; ?>";
}
else
{
var drin = document.leiste.change.value;
var check = drin.split("");
if (check[0] == "w" && check[1] == "w" && check[2] == "w")
{
parent.haupt.location.href="main.php?goto="+ drin +"&style=<?php echo"$style"; ?>";
}
}
}
</script>
<body>
<img src=../style/images<?php echo"$style"; ?>/iconarbeitsplatz.jpg style="position:absolute;top:87px;left:59px;"><form name="leiste" action="main.php" method="post" onsubmit="check();"><input type=text name=change size=15 style="position:absolute;top:88px;left:79px;font-size:14px;width:350px;height:22px;padding-top:3px;border:0;" value=Arbeitsplatz><input type=image src=../style/images<?php echo"$style"; ?>/wechsel.jpg style="position:absolute;top:86px;left:491px;"></form>
</body></html>
ich hoffe ihr könnt mir helfen
schon mal thx
mfg
Fabi15
Antwort 4 von rabies
Es wäre nett, wenn Du erst einmal noch dazu sagen würdest, was nicht geht. So kommt man nicht zum Ziel, da man nur vermuten kann, was Du eigentlich vorhast.
Nähere Angaben, wie, auf was eigentlich genau geprüft werden soll? Nur, ob da www eingegeben wird?
Und wie von rfb schon angeregt, solltest Du noch
Kommen sonst irgendwelche Fehlermeldungen? Wenn ja, welche?
Nähere Angaben, wie, auf was eigentlich genau geprüft werden soll? Nur, ob da www eingegeben wird?
Und wie von rfb schon angeregt, solltest Du noch
language=javascript mit type="text/javascript" ersetzen.Kommen sonst irgendwelche Fehlermeldungen? Wenn ja, welche?
Antwort 5 von Fabi15
es kommen keine fehlermeldungen. Es soll geprüft werden, was der User in das eingabefeld eingegeben hat und je nach dem die main.php mit dem get style und dem goto von js ausgestattet aufgeruften werden. Es soll geprüft werden ob www davor steht damit js in der weiterleitung schreiben kann das es sich sehr wahrscheinlich um eine internetseite handelt die der user da eingegeben hat. Diese Weiterleitung funktioniert nicht oda ich weiss nicht ob die if entscheidung funktioniert (ich habe vorher noch nie mit js gearbeitet).
wenn du nochmehr infos brauchst bitte melden
mfg
Fabi15
wenn du nochmehr infos brauchst bitte melden
mfg
Fabi15
Antwort 6 von rfb
nur um mich zu wiederholen:
die Eingabe "WWW.EXAMPLE.ORG" führt bei dir nicht weiter, die eingabe "bä" führt zu einem Programmfehler (da check[2] dann gar nicht existiert).
Sinnvoller ist bei Abfragen ob ein bestimmtes Wort enthalten ist immer indexOf()
Also:
statt dem Unsinn mit check.
Um sinnvolle Fehlermeldungen zu bekommen schaust du bitte bei der Scriptausführung in die Fehlerkonsole des Firefox (Menü Extras). Noch besser ist es wenn du zuvor in der Adresszeile einmal
Und diese Fehlermeldungen interessieren hier.
die Eingabe "WWW.EXAMPLE.ORG" führt bei dir nicht weiter, die eingabe "bä" führt zu einem Programmfehler (da check[2] dann gar nicht existiert).
Sinnvoller ist bei Abfragen ob ein bestimmtes Wort enthalten ist immer indexOf()
Also:
if (drin.toUpperCase().indexOf("WWW") >-1) {
parent.haupt.location.href= ...
}statt dem Unsinn mit check.
Um sinnvolle Fehlermeldungen zu bekommen schaust du bitte bei der Scriptausführung in die Fehlerkonsole des Firefox (Menü Extras). Noch besser ist es wenn du zuvor in der Adresszeile einmal
about:config eingibst und dann die Zeile mit javascript.options.strict suchst ändere dort den Wert von false auf true.Und diese Fehlermeldungen interessieren hier.
Antwort 7 von rabies
Dann wäre die Verwendung von indexOf(), wie von rfb schon gesagt, hier besser.
Ersetze diesen Teil:
mit diesem:
--rabies.
Ersetze diesen Teil:
{
var drin = document.leiste.change.value;
var check = drin.split("");
if (check[0] == "w" && check[1] == "w" && check[2] == "w")
{
parent.haupt.location.href="main.php?goto="+ drin +"&style=<?php echo"$style"; ?>";
}
}
mit diesem:
{
var drin = document.leiste.change.value;
if (drin.indexOf('www') == 0)
{
parent.haupt.location.href="main.php?goto="+ drin +"&style=<?php echo"$style"; ?>";
}
}
--rabies.
Antwort 8 von rfb
@rabies:
unsere Varianten unterscheiden sich in 2 Details:
1. toUpperCase()
2. >-1
zu 1: wandelt alles in Großbuchstaben um
zu 2: fängt Eingaben mit Protokoll ab ("http://www.example.org")
unsere Varianten unterscheiden sich in 2 Details:
1. toUpperCase()
2. >-1
zu 1: wandelt alles in Großbuchstaben um
zu 2: fängt Eingaben mit Protokoll ab ("http://www.example.org")
Antwort 9 von rabies
Aeh, Frage (an rfb): indexOf() ist case-sensitive? Oder warum sollte man hier das toUpperCase() benutzen?
Danke für Aufklärung im Vorraus.
Danke für Aufklärung im Vorraus.
Antwort 10 von rabies
Ok, an das http:// hab ich nicht gedacht. Aber hier hätte ich das ganze eher mit match() gelöst, als mit indexOf().
Antwort 11 von rfb
indexOf() ist natürlich casesensitiv (wie fast alles in JavaScript)
match() ? Wenn dann doch search(), oder? Du willst eventuelle Treffer ja nicht verwerten (zumindest sieht das Script das nicht vor).
Aber ich glaub die Anwendung regulärer Ausdrück ist hier eh übertrieben.
match() ? Wenn dann doch search(), oder? Du willst eventuelle Treffer ja nicht verwerten (zumindest sieht das Script das nicht vor).
Aber ich glaub die Anwendung regulärer Ausdrück ist hier eh übertrieben.
Antwort 12 von Fabi15
thx aba geht imma noch nicht.
nochnichmal der style kommt an !
Ich weiss nicht mehr weiter
nochnichmal der style kommt an !
Ich weiss nicht mehr weiter
Antwort 13 von Fabi15
das change kommt an aba der style nich
Antwort 14 von rfb
Zitat:
Ich weiss nicht mehr weiter
so gehts mir auch!Ich weiss nicht mehr weiter
Gibts nicht langsam mal irgendeine Fehlermeldung (JavaScript oder PHP) ?
Oder gibt es einen Link zu der verkorksten Seite=
So ist weitere Hilfe jedenfalls nicht möglich!
Antwort 15 von rabies
Huch, search() kannte ich nicht. Man kann halt doch immer dazulernen. :)
Fabi: Die Seite, auf der sich oben beschriebenes abspielt ist -- so sieht es zumindest aus -- Bestandteil eines Framesets, richtig? GET-Variablen werden allerdings nur an die 'Hauptseite' übergeben. Was in Deinem Fall sicher eine Datei ist, in der nur das Frameset definiert ist. Du müsstest also den Unterseiten im Frameset jeweils noch die GET-Variablen mitgeben.
Folgendes PHP-Snippet müsstest Du in die Datei einbauen, die das Frameset 'beschreibt':
Den Frame, der alles obige beinhaltet, müsstest Du nun so im Frameset schreiben:
--rabies.
Fabi: Die Seite, auf der sich oben beschriebenes abspielt ist -- so sieht es zumindest aus -- Bestandteil eines Framesets, richtig? GET-Variablen werden allerdings nur an die 'Hauptseite' übergeben. Was in Deinem Fall sicher eine Datei ist, in der nur das Frameset definiert ist. Du müsstest also den Unterseiten im Frameset jeweils noch die GET-Variablen mitgeben.
Folgendes PHP-Snippet müsstest Du in die Datei einbauen, die das Frameset 'beschreibt':
<?php
$querystring='';
$querystring_num=count($_GET);
$querystring_i=0;
if($querystring_num != 0) {
foreach($_GET as $key => $value) {
$querystring.=($querystring_i!=0) ? '&'.$key.'='.$value : '?'.$key.'='.$value;
$querystring_i++;
}
}
?>Den Frame, der alles obige beinhaltet, müsstest Du nun so im Frameset schreiben:
<frame src="name_der_datei.php<?php echo $querystring; ?>">--rabies.
Antwort 16 von Fabi15
die seite die den GET kriegt ist die gleiche die den JS enthällt ! Dieser ist zwar in einem Frame eingebunden aber wird sofort ohne den Frame neuzuladen aufgerufrn !
mfg
Fabi15
mfg
Fabi15
Antwort 17 von rfb
Zitat:
GET-Variablen werden allerdings nur an die 'Hauptseite' übergeben.
Sicher? Dem PHP-Interpreter ist es doch eigentlich völlig wurscht, was der Client später aus dem Kram macht. Genau genommen hat er keine Ahnung von Frames und anderen Fensterchen.GET-Variablen werden allerdings nur an die 'Hauptseite' übergeben.
Antwort 18 von rabies
Zitat:
die seite die den GET kriegt ist die gleiche die den JS enthällt ! Dieser ist zwar in einem Frame eingebunden aber wird sofort ohne den Frame neuzuladen aufgerufrn !
die seite die den GET kriegt ist die gleiche die den JS enthällt ! Dieser ist zwar in einem Frame eingebunden aber wird sofort ohne den Frame neuzuladen aufgerufrn !
Damit hat sich die Vermutung aufgelöst.
rfb: Ja, sicher.
Zitat:
Genau genommen hat er keine Ahnung von Frames und anderen Fensterchen.
Genau genommen hat er keine Ahnung von Frames und anderen Fensterchen.
Richtig, hat er auch nicht. Der Client aber genau so wenig. Deswegen reicht er die per GET übergebenen Daten auch nicht willkürlich an die Unterseiten eines Framesets weiter.
Wäre auch nicht sonderlich nett. Gehen wir davon aus, dass ich ein ganz ein böser Mensch bin, als Deckmantel aber soetwas wie AdSense anbiete (was als iframe ausgeworfen wird). Ich bräuchte nur noch auf meiner Seite (in dem iframe) alle per GET übergebenen Variablen rauszuziehen und hätte mit Sicherheit Informationen, die absolut nicht zu mir als Drittanbieter gehören würden und dort auch nicht ankommen sollten.
Antwort 19 von rfb
*grübel*
aber die GET-Variablen sind doch sowieso nur die, die per URL übergeben werden?
Warum solltest du allen möglichen Kram per URL in dein IFrame schmeißen?
aber die GET-Variablen sind doch sowieso nur die, die per URL übergeben werden?
Warum solltest du allen möglichen Kram per URL in dein IFrame schmeißen?
Antwort 20 von rabies
Ich ging bei Fabi's Beispiel davon aus, dass die Seite, auf der der Spaß stattfindet, innerhalb eines Framesets sitzt und die Formularauswertung einer anderen (übergeordneten Seite) überlassen wird.
War wohl nicht der Fall. Wäre aber meine logische Erklärung dafür gewesen, dass die Variable $style nichts zurücklieferte.
War wohl nicht der Fall. Wäre aber meine logische Erklärung dafür gewesen, dass die Variable $style nichts zurücklieferte.
Antwort 21 von rabies
Zitat:
Warum solltest du allen möglichen Kram per URL in dein IFrame schmeißen?
Noch ein Fallbeispiel dazu: Warum solltest du allen möglichen Kram per URL in dein IFrame schmeißen?
Gehen wir davon aus, dass wir eine in drei Frames unterteilte Webseite haben. Einen Header, eine Navigation und den Content. Im Contentbereich wird ein Login-Formular angezeigt. Im Header habe ich aber eine kleine Anzeige, die mir sagt, ob ich eingeloggt bin, oder nicht. In der Navigation möchte ich, wenn ein User eingeloggt ist, noch weitere Menüpunkte anzeigen. Wie kriege ich aber nun die Information, ob ein User eingeloggt ist, in den Headerframe und in den Navigationsframe, wo doch der Contentbereich und das dortige Formular den Login verarbeitet?! Gar nicht. Also muss ich die Daten an ein übergeordnetes Script schicken, dass die Daten (dass sich jemand eingeloggt hat), auch an die beiden anderen Frames weitergibt.
Dass alles weitergegeben wird, war in dem Beispiel oben die einfachste Lösung. Ich weiß ja nicht, was der Threadersteller noch alles vorhat. ;o)
Antwort 22 von Fabi15
ich möchte eine XP homepage createn und möchte die Eingabefelder vom IE (oda vom Arbeitsplatz) überprüfen und dann das dazu benötigte Programm laden.
Link XP - Homepage
mfg
Fabi15
Link XP - Homepage
mfg
Fabi15
Antwort 23 von Fabi15
aba mal was anderes:
Kann man das nicht per PHP lösen ?
mfg
Fabi15
Kann man das nicht per PHP lösen ?
mfg
Fabi15
Antwort 24 von rfb
Zitat:
Kann man das nicht per PHP lösen ?
wenn du mal das Problem beschreibst erhältst du sicherlich darauf eine Antwort.Kann man das nicht per PHP lösen ?
Zitat:
Sie entsprechen den Mindestanforderungen !
(von deinem Link) ist so ziemlich der größte Stuss den ich bislang zum Thema Browserabfragen gesehen habe.Sie entsprechen den Mindestanforderungen !
Dazu die peinliche Verwechslung von Java und JavaScript und die Abfrage nach screen.width >= 1024.
(angenommen ich würde einen virtuellen Bildschirm nutzen, der weitaus größer als mein Gerät ist, was dann?)
Wozu der ganze Zauber da gemacht wird erhellt sich mir nicht.

