javascript in cgi-script


hdlf

Grünschnabel
Hi, also ich hab ein Problem und hab auch schon etliches dazu gelesen, aber hab es bis jetzt nicht verstanden also suche ich nach einer ganz einfachen Lösung, da ich mich prinzipiell mit CGI/Perl überhaupt nicht auskenne.
Also ich habe ein CGI-Script welches für mich einen Dateiupload auf den Server durchführt. Diesen Dateinamen will ich dann weiterverwenden. Bis jetzt ist es so, dass das CGI-Skript aufgerufen wird mir eine neue Seite angezeigt wird, wo steht, die Datei wurde erfolgreich auf den Server geladen und dann hab ich nen Link an die nächste Seite wo ich den Dateinamen mitschicke. Ich will aber das das ganze gleich funktioniert und ich das nicht erst an ne neue Seite schicken muß, aber ich hab alles mögliche probiert und es funktioniert nicht.
Code:
#!perl -w

use strict;
use CGI; # Modul fuer CGI-Programme

my $cgi = new CGI; # neues Objekt erstellen

$CGI::POST_MAX = 2048;

# Content-type fuer die Ausgabe
print $cgi->header(-type => 'text/html');

# die datei-daten holen
my $file = $cgi->param("myfile");


#Sicherhitsvorkehrungen
#my @exteynsions = qw(pdb);

#if($file{"filename"} !~ /^[a-z\.\-_]+?\.([a-z]{3})$/)
# { die("Ungültiger Dateiname"); }
#else
# {
# my $extension = $1;
# if(!grep($extension,@extensions))
#  { die("Ungültige Dateiendung"); }
#}


# dateinamen erstellen und die datei auf dem server speichern
my $dir = 'e:/programme/xampp/htdocs/';
my $fname = 'file_'.$$.'_'.$ENV{REMOTE_ADDR}.'_'.time.'.pdb';
open DAT,'>',$dir . $fname or die 'Error processing file: ',$!;

# Dateien in den Binaer-Modus schalten
binmode $file;
binmode DAT;

my $data;
while(read $file,$data,1024) {
  print DAT $data;
}
close DAT;

print <<"HTML";
<html>
<head>
<title>J MOl Versuch</title>
<script src="..\jmol_zeug\jmol-11.1.26\Jmol.js"></script>
</head>
<body>
<h1>Die Datei $file wurde erfolgreich hochgeladen.</h1>

<tbody>

    <tr>


  <script>
  	var datei = "${fname}";
     document.write (datei);
      var script= "load" + " " + datei;
         document.write (script);
         jmolInitialize("..\jmol_zeug\jmol-11.1.26");
jmolApplet(550, script);
jmolBr();
  	</script>

        </td>
      <a href="../seite1.php?variable=$fname"> JMOL-Applet</a>

 <p>

  </p>

</body>
</html>
HTML
Das javascript funitoniert bist zu der Ausgabe document.write (script), der Aufruf danach funktioniert aber nicht mehr, wenn ich den Link an die nächste Seite schicke, funktioniert alles ganz toll.
Kann mir einer helfen
Gruß, Steffi:confused:
 

renee

Erfahrenes Mitglied
Code:
#!perl -w

use strict;
use CGI; # Modul fuer CGI-Programme

my $cgi = new CGI; # neues Objekt erstellen

$CGI::POST_MAX = 2048;

# die datei-daten holen
my $file = $cgi->param("myfile");


#Sicherhitsvorkehrungen
#my @exteynsions = qw(pdb);

#if($file{"filename"} !~ /^[a-z\.\-_]+?\.([a-z]{3})$/)
# { die("Ungültiger Dateiname"); }
#else
# {
# my $extension = $1;
# if(!grep($extension,@extensions))
#  { die("Ungültige Dateiendung"); }
#}


# dateinamen erstellen und die datei auf dem server speichern
my $dir = 'e:/programme/xampp/htdocs/';
my $fname = 'file_'.$$.'_'.$ENV{REMOTE_ADDR}.'_'.time.'.pdb';
open DAT,'>',$dir . $fname or die 'Error processing file: ',$!;

# Dateien in den Binaer-Modus schalten
binmode $file;
binmode DAT;

my $data;
while(read $file,$data,1024) {
  print DAT $data;
}
close DAT;

print $cgi->redirect("../seite1.php?variable=$fname");
(ungetestet)
 

hdlf

Grünschnabel
Hi, ganz lieben Dank, es funktioniert. Oh man, nur eine Zeile und ich quäl mich mit dem Quatsch bestimmt schon drei Tage rum, heul, ich werd es wohl niemals lernen. Also nochmal ganz lieben Dank und noch nen schönen Tag, steffi:)
 

tschitscho

Mitglied
Ich habe noch ein viel einfacheres Problem (so glaube ich zumindest). Bei mir will genau auch das Javascript nicht laufen.
"tcal ist undefiniert"

Hier der ganze Code meiner Seite:
Code:
#!/usr/bin/perl
use strict;
use warnings;
use Authen::Captcha;



print <<"END";
Content-Type: text/html; charset=ISO-8859-1

<html><head>


 	
  <script type="text/javascript" src="../cal/calendar_eu.js"></script>
	<link rel="stylesheet" href="/cal/calendar.css">
  <link rel="stylesheet" href="/style.css" type="text/css">
</head>
<body>


<form name="mailform" action="$formmail" method="post">
                    	<input type="text" name="Termin">

	<script type="text/javascript">
		new tcal ({
                      		// form name
                      		'formname': 'mailform',
                      		// input name
                      		'controlname': 'Termin'
                      	});
	</script>  
	
 


          </form>
          </td>
      </tr>
    </tbody></table>
  </body>
</html>
END