online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon Fabi15 vom 30.01.2019, 20:12 Options

Java + Formular + Weiterleitung

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.

<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>


Soweit der JS script und jetzt das formular

<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>


Wäre nett wenn mir einer helfen könnte

mfg
Fabi15


Antwort schreiben

Antwort 1 von rabies vom 30.01.2019, 20:52 Options

Hi,


		<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 vom 30.01.2019, 21:46 Options

 <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 vom 31.01.2019, 16:12 Options

danke danke habe alles mal probiert funktioniert aba trotzdem nicht.

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 vom 31.01.2019, 16:40 Options

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
language=javascript
mit
type="text/javascript"
ersetzen.

Kommen sonst irgendwelche Fehlermeldungen? Wenn ja, welche?

Antwort 5 von Fabi15 vom 31.01.2019, 17:01 Options

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

Antwort 6 von rfb vom 31.01.2019, 17:34 Options

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:

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 vom 31.01.2019, 17:37 Options

Dann wäre die Verwendung von indexOf(), wie von rfb schon gesagt, hier besser.

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 vom 31.01.2019, 17:43 Options

@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")

Antwort 9 von rabies vom 31.01.2019, 17:45 Options

Aeh, Frage (an rfb): indexOf() ist case-sensitive? Oder warum sollte man hier das toUpperCase() benutzen?

Danke für Aufklärung im Vorraus.

Antwort 10 von rabies vom 31.01.2019, 17:48 Options

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 vom 31.01.2019, 19:44 Options

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.

Antwort 12 von Fabi15 vom 31.01.2019, 19:55 Options

thx aba geht imma noch nicht.

nochnichmal der style kommt an !

Ich weiss nicht mehr weiter

Antwort 13 von Fabi15 vom 31.01.2019, 20:00 Options

das change kommt an aba der style nich

Antwort 14 von rfb vom 31.01.2019, 21:37 Options

Zitat:
Ich weiss nicht mehr weiter
so gehts mir auch!

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 vom 31.01.2019, 22:32 Options

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':

		<?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 vom 05.02.2019, 14:40 Options

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

Antwort 17 von rfb vom 05.02.2019, 15:13 Options

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.

Antwort 18 von rabies vom 07.02.2019, 13:08 Options

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 !


Damit hat sich die Vermutung aufgelöst.

rfb: Ja, sicher.

Zitat:
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 vom 07.02.2019, 13:25 Options

*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?

Antwort 20 von rabies vom 07.02.2019, 14:01 Options

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.

Ähnliche Themen

iceweasel / firefox: java installation
Sichtbarer  12.06.2007 - 220 Hits - 5 Antworten

Brauche dringend Hilfe! Formular
Experte  25.06.2007 - 77 Hits - 3 Antworten

Javascript-Weiterleitung
gosch  05.07.2007 - 81 Hits - 1 Antwort

*.java, wie aufrufen?
Marilana  17.01.2008 - 156 Hits - 2 Antworten

PHP-Weiterleitung ohne Referrer-Übergabe
Nadine80  13.08.2008 - 133 Hits - 3 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026