[vienna.pm] CGI: $q->param('name') ist leer

Roland Bauer roland.bauer at fff.at
Sun Jul 16 10:03:40 CDT 2000


* * * vienna-pm-list * * *


Hallo!

Ich habe da ein halbfertiges CGI-Script, welches das Editieren eines
Files via Webinterface ermoeglichen soll.

Wenn man auf den Button "Load" drueckt, soll das File
in das Textfeld geladen werden.

Seltsamerweise ist aber der Parameter
$wanted1
an der Stelle 1 (beim if) leer, aber an der Stelle 2 bei  "Pressed
Button"
gefuellt mit "Load", sobald man einmal Load gedrueckt hat.
(Nach Druecken von "Save" sollte  $wanted1 eq "Save" sein.)
Wieso kann $wanted1 zuerst leer und spaeter gefuellt sein ... !?

Ich vermute entweder
1) einen prinzipiellen Denkfehler meinerseits, den nur ich nicht sehe
:-) oder
2) ein Problem mit der Datenmenge. Gibt's das ueberhaupt, dass die
Groesse des param-Bereiches limitiert ist? (Das Textfeld ist relativ
gross.)

Und dann verstehe ich nicht, warum es beim $q->save(OUT1) einen
Syntaxfehler gibt (Stelle 3) ...

Das Script ist realtiv lang, aber eigentlich kommt es nur auf diese
zwei/drei
Stellen an ...

Bin auch fuer allgemeine Tips zum Script dankbar :-)
Gibt es so ein Ding schon fertig?

Danke
Roland

----------------------------------------------
#!perl
#!/usr/bin/perl

use strict;
use vars qw($VERSION);
use CGI;
use CGI::Carp qw(fatalsToBrowser);

$VERSION = 0.01_00;

my $q = new CGI;

&check_login; # exit if not ok

&page_start;

###########################################
sub check_login {
 my $id = $q->param('id');
 unless ($id) {
  &page_login, exit;
 }
 else {
  &login_ok or &page_login_failed, exit;
 }
}
############################################
sub login_ok {
 return 1;
}
############################################
sub page_login {
 print
  &vorspann('Login'),
  $q->start_form,
  $q->hidden('me', 'page_login'),
  $q->hidden('id', '4711'),
  $q->start_table,
  $q->Tr(
   $q->td("User:"),
   $q->td($q->textfield(-name=>'user')),
  ),
  $q->Tr(
   $q->td("Password:"),
   $q->td($q->password_field(-name=>'password')),
  ),
  $q->end_table,
  $q->hidden('wanted', 'page_start'),
  $q->submit(),
  $q->end_form,
  $q->end_html;
}
############################################
sub page_start {
 my @p = $q->param;
 use Cwd;
 my $text = $q->param('text');
 my $dir  = $q->param('dir') || cwd or die;
 my $file = $q->param('file') || 'willi.txt';
 my $full = "$dir/$file";

 #$text = $q->param('button_submit');

 my $wanted1 = $q->param('button_submit');

 ################################################################
 if ($wanted1 eq 'Load') { ########## ... IMMER LEER ... WARUM ??
(Stelle 1)
  if  (-f $full) {
   open INP, $full or die;
   local $/;
   $text = <INP>;
   $text = "wanted = $wanted1";
  }
  elsif (!$file) {
   $text = "ERROR: Please enter a filename";
  }
  else {
   $text = "ERROR: File does not exist";
  }
 }
 elsif ($wanted1 eq '') {
  my @par = $q->param;
  $text = "Please load a file. params = \n## $wanted1\n++ @par\n** @p";
 }
 else {
  $text = "Please select a File. wanted1 was [$wanted1]";
 }

 #$text = 'pp';

 opendir DIR, $dir or die;
 my @files = sort readdir DIR;
 #my %labels = (
 # 'eenie'=>'your first choice',
 # 'meenie'=>'your second choice',
 # 'minie'=>'your third choice',
 #);
 print
  &vorspann("Edit File"),
  $q->start_form,
  $q->hidden('me', 'page_start'),
  $q->hidden('id'),

  #"[",$q->param('button_submit'),"]",
  "Pressed Button [$wanted1]", #### HIER IST ES OK (Stelle 2)
  #"[",$text,"]",

  $q->start_table,
  $q->Tr(
   $q->td(
    "Dir:"
   ),
   $q->td(
    $q->textfield('dir',$dir,60,180),
   ),
  ),
  $q->Tr(
   $q->td(
    "File:"
   ),
   $q->td(
    $q->textfield('file',$file,60,180),
   ),
  ),
  $q->end_table,

  $q->start_table,
  $q->Tr(
   $q->td({-valign=>'top'},
    'Select:',
    $q->br,
    $q->scrolling_list(
     -name=>'menu_name',
     -values=>\@files,
     -default=>$file,
     -size=>10,
     -multiple=>'false',
     #-labels=>\%labels,
    ),
   ),
   $q->td({-valign=>'top'},
    #$q->textarea('text',$text,20,80),
    $q->textarea('text',$text,4,80),
   ),
  ),
  $q->end_table,
  $q->hidden('wanted', 'page_start'),
  $q->submit(-name => 'button_submit', -value => 'Load'), ' ',
  $q->submit(-name => 'button_submit', -value => 'Save'), ' ',
  $q->hidden('button_submittest'),
  $q->end_form,
  $q->end_html;
  my $out = "!param.log";
  open (OUT1,">$out") || die;
  #$q->save(OUT1); ################ ....... AUCH NICHT OK ???
########### (Stelle 3)
}
############################################
sub page_login_failed {
 print &vorspann('Login failed');
}
############################################
sub vorspann {
 my ($h1) = @_;
 $h1 ||= 'Default Title';

 return
  $q->header,
  $q->start_html(
   -title=>'Redsys - '.scalar(localtime),
  ),
  $q->h1($h1),
  ;
}
#############################################
--------------------------



###
You are subscribed to vienna-pm-list as Roland Bauer <roland.bauer at fff.at>
http://www.fff.at/fff/vienna.pm/



More information about the Vienna-pm mailing list