Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]783[/thread]

Pl Datei möchte sich downloaden?



<< |< 1 2 >| >> 11 Einträge, 2 Seiten
Danwe
 2006-07-20 15:27
#8409 #8409
User since
2006-06-09
76 Artikel
BenutzerIn
[default_avatar]
ich habe ein kleines Problem, seit kurzem
Ich habe ein Formular in Perl:

<form name="Formular" action="gaestebuchAdmin.pl" method="post" onsubmit="return editPostValues();">

Der Code steht ebenfalls in der Datei gaestebuchAdmin.pl die sich dann eben selbst aufrufen soll.

Wenn ich jetzt meinen Button klicke u. die Datei gaestebuchAdmin.pl geladen werden soll, dann kommt Firefox einfach u. bietet mir die Datei zum Download an, anstelle sie auszuführen!
Was ist hier falsch?

Mit einer anderen pl Datei funktioniert das ganze auch, auch das selbst aufrufen. Auch der Dateikopf ist identisch mit einer anderen Datei, mit der es funktioniert. Wo kann der Fehler liegen?
pktm
 2006-07-20 16:46
#8410 #8410
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Eventuell gibst du einen falschen header aus?
Zeige mal ein bischen Code, dann könnte man es vielleicht sehen.
http://www.intergastro-service.de (mein erstes CMS :) )
Danwe
 2006-07-20 18:01
#8411 #8411
User since
2006-06-09
76 Artikel
BenutzerIn
[default_avatar]
Hier mal der ganze Code.
ist stellenweise ein wenig verhauen, außerdem an ein paar stellen unfertig da ich z.Z. dran werkle:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
#! /usr/bin/perl -w

use DBI;
use CGI;

use warnings;
use CGI::Carp qw/fatalsToBrowser/;

if ($ENV{'REQUEST_METHOD'} eq 'POST') #Abfragen ob der user eine Eingabe gemacht hat
{
my $cgi = new CGI;

my $action = $cgi->param('action');
my $eintragID = $cgi->param('eintragID');

if ($action eq "change")
{
&GaestebuchEintrag($eintragID); #Ändern d. Gästebucheintrages
}
elsif ($action eq "delete")
{
&GaestebuchEintragLoeschen($eintragID); #Löschen d. Gästebucheintrages
}
}

&htmlGaestebuch();


#+-----------+-------+------+---------------+-------+-----------+------+----------+
#| EintragID | Datum | Zeit | Name | Titel | Nachricht | Mail | Homepage |
#+-----------+-------+------+---------------+-------+-----------+------+----------+


sub Weiterleitung
{
print "Content-type: text/html\n\n";
print <<EOT;

<html>
<head>
<title>Gästebuch Weiterleitung</title>
<link rel="stylesheet" type="text/css" href="/test/daniel/gaestebuch/styles.css">
<meta http-equiv="refresh" content="0"; URL=gaestebuch.plx">
</head>
<body>
</body>
</html>

EOT
}


sub GaestebuchEintragLoeschen
{
my $id = shift;
print "<p>".$id."</p>";

&connect();
my $sql =
my $sth = $dbh->prepare( $sql );
$sth->execute();
$sth->finish();
&disconnect();
}


sub GaestebuchEintrag
{
my $id = shift;

my $cgi = new CGI;

my $nachricht = $cgi->param('nachricht');
my $name = $cgi->param('name');
my $wohnort = $cgi->param('wohnort');
my $mail =$cgi->param('mail');
my $homepage =$cgi->param('homepage');
my $titel =$cgi->param('titel');


$homepage =~ s/^http:(\/*|\\*)*//;


&dateNow();
my $datum =@dateNow[0];
my $zeit =@dateNow[1];

&connect();
my $sql = qq{insert into gaestebuch (Datum,Zeit,Name,Titel,Nachricht,Mail,Homepage,Wohnort) values (?,?,?,?,?,?,?,?)};
my $sth = $dbh->prepare( $sql );
$sth->execute($datum,$zeit,$name,$titel,$nachricht,$mail,$homepage,$wohnort);
$sth->finish();
&disconnect();
}


sub htmlGaestebuch
{
print "Content-type: text/html\n\n";

print <<EOT;
<html>
<head>
<title>Gästebuch</title>
<link rel="stylesheet" type="text/css" href="/test/daniel/gaestebuch/styles.css">
<script type="text/javascript" src="/test/daniel/gaestebuch/functions.js"></script>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
</head>
<body>



<form name="Formular" action="gaestebuchAdmin.pl" method="post" onsubmit="return editPostValues();">

<div id=""></div>

<h1> Zum editieren der Einträge anklicken</h1>

EOT

print @dateNow[0];
print @dateNow[1];

&connect(); #Verbinden mit datenbank

"Database con nection not made: $DBI::errstr";

my $sql = qq{select * from gaestebuch};
my $sth = $dbh->prepare( $sql );
$sth->execute();
while(@ergebnis=$sth->fetchrow_array)
{

print " <table class='guestTable' width = '400px' onclick='textEditNow(this)' onmouseover='colorChangeColor(this)' onmouseout='colorChangeWhite(this)' onclick='textEditNow(this)'> \n";
print " <tr> \n";
print " <td id='cDate".$ergebnis[0]."' class='Date' width='125px' rowspan='2'> \n";
print " <b>#".$ergebnis[0]."</b> \n";
print " <p> \n";
print " ".$ergebnis[1].",<br>um ".$ergebnis[2]." Uhr<br> \n";
print " <a id='website".$ergebnis[0]."' href='http://".$ergebnis[7]."' target='_blank'>".$ergebnis[7]."</a> \n";
print " </p> \n";
print " </td> \n";
print " <td id='cName".$ergebnis[0]."' class='Name' align = 'Right'> \n";
print " <b id='name".$ergebnis[0]."'>".$ergebnis[3]."</b> \n";
print " aus \n";
print " <b id='home".$ergebnis[0]."'>".$ergebnis[8]."</b> \n";
print " </td> \n";
print " </tr> \n";
print " <tr> \n";
print " <td id='cText".$ergebnis[0]."' class='Text'> \n";
print " <h1 id='title".$ergebnis[0]."'>".$ergebnis[4]."</h1> \n";
print " <div id='message".$ergebnis[0]."'>".$ergebnis[5]."</div> \n";
print " </td> \n";
print " </tr> \n";
print " </table> \n\n";
}
$sth->finish();
&disconnect(); #Verbindung mit Datenbank trennen

print "<input name='entryID' id='entryID' type='hidden' value='0'/> \n";
print "<input name='pagePosition' id='pagePosition' type='hidden' value='0'/> \n";
print "<input name='action' id='action' type='hidden' value='delete'/> \n\n";

print "</form>";

print <<EOT;
<br />



<script language="JavaScript">
<!--
gotoPosition(); //Possition aus URL wieder aufnehmen
//-->
</script>

</body>
</html>
EOT
}

sub dateNow
{
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,
$Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $CTIME_String = localtime(time);
$Monat+=1;
$Jahrestag+=1;
$Monat = sprintf("%02d",$Monat);
$Monatstag = sprintf("%02d",$Monatstag);
$Stunden = sprintf("%02d",$Stunden);
$Minuten = sprintf("%02d",$Minuten);
$Sekunden = sprintf("%02d",$Sekunden);
$Jahr+=1900;
my @Wochentage = ("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
my @Monatsnamen = ("","Januar","Februar","M&auml;rz","April","Mai","Juni",
"Juli","August","September","Oktober","November","Dezember");

#@dateNow=(["$Monatstag. $Monatsnamen[$Monat] $Jahr<br>\n"], ["$Stunden.$Minuten Uhr<br>\n"]);

$dateNow[0]="$Monatstag. $Monatsnamen[$Monat] $Jahr";
$dateNow[1]="$Stunden:$Minuten:$Sekunden";
}

sub connect
{
my $verbindung = "DBI:mysql:dwTest";
my $username = "*****";
my $password = "*****";

use DBI;
$dbh = DBI->connect($verbindung, $username, $password);
}

sub disconnect
{
$dbh->disconnect();
}
GwenDragon
 2006-07-21 11:51
#8412 #8412
User since
2005-01-17
14749 Artikel
Admin1
[Homepage]
user image
Du gibst bei Gästebucheintrag und Gästebucheintragloeschen gar keinen Header aus!
Besser am Anfang einen Header ausgeben.
Und es fehlt das Abschalten der gepufferten Ausgabe!
Also eher so (schnippsel):

Code: (dl )
1
2
3
4
$| = 1; # Ausgabepufferung ausschalten
$my $cgi = new CGI;
print $cgi->header();
if ($ENV{'REQUEST_METHOD'} eq 'POST')
Danwe
 2006-07-21 13:14
#8413 #8413
User since
2006-06-09
76 Artikel
BenutzerIn
[default_avatar]
Was bringt mir der header?
ich habe doch den HTM head, oder was printet der dann noch?
Das hier vielleicht: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
?

Allerdings verursacht das ganze nur, dass die Datei garnicht ausgeführt wird, ich bekomme dann nähmlich immer diesen Fehler:
BEGIN not safe after errors--compilation aborted at /usr/local/httpd/cgi-bin/daniel/gaestebuchAdmin.pl line 213.

und in line 213 steht use DBI:

use DBI;
$dbh = DBI->connect($verbindung, $username, $password);

in der sub connect.

Kapiere ich nicht!
renee
 2006-07-21 13:21
#8414 #8414
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Der ist das was Du z.B. in der Sub htmlGaestebuch als erstes ausgibst:
Code: (dl )
    print "Content-type: text/html\n\n";


Das hast Du aber nicht überall drin...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Danwe
 2006-07-21 13:30
#8415 #8415
User since
2006-06-09
76 Artikel
BenutzerIn
[default_avatar]
Was meinst dud amit, dass ich das nicht überall drinnen habe? Ich brauche das doch nur einmal dort wo ich meine Seite erzeuge!?

Mein head sieht dann am Ende so aus, im generierten HTML:
Code: (dl )
1
2
3
4
5
6
  <head>
<title>Gästebuch</title>
<link rel="stylesheet" type="text/css" href="/test/daniel/gaestebuch/styles.css">
<script type="text/javascript" src="/test/daniel/gaestebuch/functions.js"></script>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
</head>


Müsste dann doch alles stimmen!
renee
 2006-07-21 14:38
#8416 #8416
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du gibst aber nicht den Content-type mit aus - und das ist das Entscheidende!

Wenn Du einen Eintrag löschen willst, sendest Du als erstes ein <p>$id</p> und keinen Content-type!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Danwe
 2006-07-21 15:55
#8417 #8417
User since
2006-06-09
76 Artikel
BenutzerIn
[default_avatar]
sry, ich glaube ich hocke völlig auf der Leitung.
Wennich einen Eintrag lösche, dann lade ich doch die Seite neu, dann wird die Übergabe verarbeitet u. dann erstelle ich meinen HTML Bereich. Oder was ist jetzt falsch daran!?
Danwe
 2006-07-21 16:22
#8418 #8418
User since
2006-06-09
76 Artikel
BenutzerIn
[default_avatar]
So ganz verstanden was ihr mir sagen wolltet habe ich zwar immer noch nicht, aber ich glaube das wars:

Die Information muss gleich am anfang gegeben werden:
print "Content-type: text/html\n\n";

Also habe ichs vor die Verarbeitung der Parameter gesetzt, am anfang vom Script. Jetzt funktioniert wieder alles wie es soll.
Dafür habe ich die selbe Zeile aus den 2 anderen Funktionen herausgenommen :blush:
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2006-07-20 15:27.