Schrift
[thread]3503[/thread]

Premature end of script headers



<< |< 1 2 >| >> 12 Einträge, 2 Seiten
frank_D
 2004-08-22 16:54
#32580 #32580
User since
2004-08-20
6 Artikel
BenutzerIn
[default_avatar]
Halihalo,
ich habe gerade versucht meine erste Suchfunktion zu programmieren, ich bekomme aber ständig im Browser die Meldung "Internel Server Error" zu sehen und in der error Datei steht dann "Premature end of script headers", was ja quasi vorzeitiges Ende des Scripts bedeutet,aber ich weiß nicht, was ich verändern muß. Ich zeige euch mal das Script:
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
#!c:/Perl/bin/perl -w

use strict;

use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);
use DBI;

my $DBH;
my $STH;
my $CGI;
my $antwort;

$CGI = new CGI();

##Suche oder Eintrag##

if ($CGI->param("suchanfrage")){
   suche($CGI,$DBH,$STH);
   }

#Start Subroutine Suche

sub suche {
          my $nachname = param("nachname");
          my $abteilung = param("abt");

          $DBH = DBI->connect("DBI:CSV:db_mitarbeiter=c:/apachefriends/xampp/htdocs/cgi-bin")
          or die "Konnte keine Verbindung zur Datenbank herstellen:$!";

          $STH = $DBH->prepare("SELECT * FROM db_mitarbeiter
          WHERE Nachname = '$nachname' AND Abteilung = '$abteilung'")
          or die "Konnte SQL-Statement nicht bereitstellen:$!";

          $STH->execute()
          or die "Ausfuehren nicht moeglich:$!";

#Treffer

if ($STH->rows != 0){
print <<HERE_TEXT1;
Content-type:text/html

<html>
<head>
<title>Antwort</title>
</head>
<body>
<center>
<h1>Suchergebnis</h1>
<hr>
<table border>
<tr>
<td width="200"><b>Familienname:</b></td>
<td width="100"><b>Vorname:</b></td>
<td width="200"><b>Abteilung:</b></td>
<td width="100"><b>Telefon:</b></td>
</tr>
HERE_TEXT1

my @data;

while (@data = $STH->fetchrow_array()) {
my $familienname = $data[0];
my $vorname = $data[1];
my $abt = $data[2];
my $telefon = $data[3];

print qq§<tr>\n<td><b>$familienname</b></td>\n<td>$vorname</td>
\n<td>$abt</td>\n<td>$telefon</td>\n</tr>\n§;

}

print qq§</table>\n<p><a href="formular1.html">Neue Suche</a></p>
\n<hr>\n</center>\n</body>\n</html>§;

}

##Keine Treffer

else {
print <<HERE_TEXT2;
Content-type:text/html

<html>
<head>
<title>Antwort</title></head>
<body>
<p>Leider brachte die Suche nach '$nachname' keine Ergebnisse!</p>
<hr>
<p><a href="formular1.html">Neue Suche!</a></p></body></html>
HERE_TEXT2
}

$STH->finish();
$DBH->disconnect;}
##Ende Subroutine Suche

#Start Subroutine Eintragen

sub eintragen{

my ($nachname, $vorname, $abt, $telefon)=(param('nachname'),
param('vorname'), param('abt'),param('telefon'));

$DBH = DBI->connect("DBI:CSV:db_mitarbeiter=c:/apachefriends/xampp/htdocs/cgi-bin")
or die "Konnte keine Verbindung zur Datenbank herstellen:$!";

$STH = $DBH->do("INSERT INTO db_mitarbeiter
VALUES ('$nachname','$vorname','$abt','$telefon')")
or die "Konnte SQL-Staement nicht bereitstellen:$!";

print <<HERE_TEXT3;
Content-type:text/html

<html>
<head>
<title>Antwort</title></head>
<body><h4>Datenbankeintrag:</h4>
<hr>
<p><b>$nachname</b>,$vorname, $abt, $telefon</p>
<hr>
<p><a href="formular2.html">Neuer Eintrag!</a></p>
<hr>
</body>
</html>

HERE_TEXT3

$DBH->disconnect;

}
#Ende

Ich wollte eine Datenbank mit Mitarbeitern programmieren und über eine Suchfunktion sollten diese ausgelesen werden können. Nur wenn ich einen neuen Mitarbeiter anlegen möchte,bekomme ich ständig diese Fehlermeldung.
2 Fehlermeldungen habe ich selbst wegbekommen, aber bei dieser weiß ich echt nicht, was ich machen muß.

Vieleicht könnt ihr mir ja helfen.
Vielen Dank schonmal im vorraus!

Gruß

edit pq: code-tags hinzugefügt\n\n

<!--EDIT|pq|1093179696-->
pq
 2004-08-22 17:03
#32581 #32581
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
Wiki:Server Error
sprich: in diesem falle brauchst du das errorlog.

Wiki:Skript vor dem posten soweit wie möglich kürzen!\n\n

<!--EDIT|pq|1093179962-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
pq
 2004-08-22 17:08
#32582 #32582
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=frank_D,22.08.2004, 14:54]Nur wenn ich einen neuen Mitarbeiter anlegen möchte,bekomme ich ständig diese Fehlermeldung.[/quote]
deutet auf falsche permissions hin (hint: du hast andere dateirechte als der
webserver-user wwwrun o.ä.)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
frank_D
 2004-08-22 19:23
#32583 #32583
User since
2004-08-20
6 Artikel
BenutzerIn
[default_avatar]
Halihalo,
erstmal vielen dank für die Links zu den Tipps. Durch
use CGI;
my $cgi = CGI->new;
print $cgi->header();
erscheint jetzt Gott sei Dank keine Fehlermeldung mehr, es werden aber leider auch keine Daten in die Datenbank geschrieben. Kannst Du mir da vielleicht weiterhelfen?
Und bei der Suche in der Datenbank erscheint die Meldung:

Software error:
Ausfuehren nicht moeglich: at C:/apachefriends/xampp/cgi-bin/database.pl line 39.

Line 39 sieht so aus:

$STH->execute()

Hoffe,das hilft Dir weiter!

Gruß
renee
 2004-08-22 20:10
#32584 #32584
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Gib mal $DBI::errstr statt $! aus!
Code: (dl )
$STH->execute() or die "Ausfuehren nicht moeglich:$DBI::errstr";
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/
frank_D
 2004-08-23 00:33
#32585 #32585
User since
2004-08-20
6 Artikel
BenutzerIn
[default_avatar]
Klappt leider auch nicht. Das Ergebnis ist dasselbe.
Haste sonst vielleicht noch eine Idee?

Gruß
renee
 2004-08-23 00:50
#32586 #32586
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Normalerweise sollte eine genauere Fehlermeldung als die von dir zitierte (Software error:
Ausfuehren nicht moeglich: at C:/apachefriends/xampp/cgi-bin/database.pl line 39.) kommen...
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/
frank_D
 2004-08-23 01:08
#32587 #32587
User since
2004-08-20
6 Artikel
BenutzerIn
[default_avatar]
Ich kann Dir ja mal die error_log Datei zeigen, die folgende Fehlermeldungen angibt:
Code: (dl )
1
2
3
4
5
6
7
8
- Use of uninitialized value in concatenation (.) or string at - referer: http://localhost/formular1.html
- SQL ERROR: , referer: http://localhost/formular1.html
- String 'HASH(0x1d966c4)' not allowed in Numeric expression!, referer: http://localhost/formular1.html
referer: http://localhost/formular1.html
referer: http://localhost/formular1.html
SQL ERROR: Couldn't find predicate!, referer: http://localhost/formular1.html
Execution ERROR: No command found
Use of uninitialized value in concatenation (.) or string at C:/apachefriends/xampp/cgi-bin/database.pl line 39., referer: Ausfuehren nicht moeglich: at C:/apachefriends/xampp/cgi-bin/database.pl line 39.,

Vielleicht hilft Dir ja das weiter.

Gruß

edit pq: code-tags hinzugefügt und URL-tags entfernt\n\n

<!--EDIT|pq|1093214158-->
ptk
 2004-08-23 13:55
#32588 #32588
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
@frank_D: Du solltest auf jeden Fall mit DBI-Platzhaltern arbeiten. Also "SELECT ... FROM ... WHERE ... = ?" und dann im execute-Aufruf die entsprechende Variable angeben. Ansonsten hast du ein Sicherheits- und Quotingproblem.
renee
 2004-08-26 21:12
#32589 #32589
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
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
#!c:/Perl/bin/perl

use strict;
use warnings;
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
use DBI;

my $cgi = CGI->new;
print $cgi->header();
my %params = $cgi->Vars();
warningsToBrowser(1); # damit werden Warnungen an den Browser geschickt


##Suche oder Eintrag##

if ($params{suchanfrage}){
suche();
}
else{
eintragen();
}

#Start Subroutine Suche

sub suche {
my $nachname = $params{nachname};
my $abteilung = $params{abt};

my $dbh = DBI->connect("DBI:CSV:mitarbeiter=c:/apachefriends/xampp/htdocs/cgi-bin") or die "Fehler: $DBI::errstr\n";
my $statement = "SELECT * FROM mitarbeiter WHERE Nachname = ? AND Abteilung = ?"; # hier besser mit Platzhaltern arbeiten
my $sth = $dbh->prepare($statement) or die "Konnte SQL-Statement nicht bereitstellen: $DBI::errstr";

$sth->execute($nachname,$abteilung) or die "Ausfuehren nicht moeglich: $DBI::errstr"; # hier die Platzhalter füllen

#Treffer

if ($sth->rows != 0){
print $cgi->start_html(-title => 'Antwort');
print qq~<center><h1>Suchergebnis</h1><hr><table border=1><tr><td width="200"><b>Familienname:</b></td>
<td width="100"><b>Vorname:</b></td><td width="200"><b>Abteilung:</b></td><td width="100">
<b>Telefon:</b></td></tr>~;

while (my ($familienname,$vorname,$abt,$telefon) = $sth->fetchrow_array()) {
print qq§<tr>\n<td><b>$familienname</b></td>\n<td>$vorname</td>\n<td>$abt</td>\n<td>$telefon</td>\n</tr>\n§;
}

print qq§</table>\n<p><a href="formular1.html">Neue Suche</a></p>\n<hr>\n</center>§;
}
else { ##Keine Treffer
print $cgi->start_html(-title => 'Antwort');
print qq~<body><p>Leider brachte die Suche keine Ergebnisse!</p><hr><p>
<a href="http://localhost/formular1.html">Neue Suche!</a></p>~;
}
print $cgi->end_html();
$sth->finish();
$dbh->disconnect;
} ##Ende Subroutine Suche

sub eintragen{ #Start Subroutine Eintragen
my $dbh = DBI->connect("DBI:CSV:mitarbeiter=c:/apachefriends/xampp/cgi-bin") or die "Fehler: $DBI::errstr";
my $statement = "INSERT INTO mitarbeiter(Nachname,Vorname,Abteilung,Telefon) VALUES(?,?,?,?)";
my $sth = $dbh->prepare($statement) or die "Konnte SQL-Statement nicht bereitstellen: $DBI::errstr";
$sth->execute($params{nachname},$params{vorname},$params{abt},$params{telefon});

#Antwortseite
print $cgi->start_html(-title => 'Antwort');
print qq~<h4>Datenbankeintrag:</h4><hr><p><b>$nachname</b>,$vorname, $abt, $telefon</p><hr><p>
<a href="formular2.html">Neuer Eintrag!</a></p><hr></body>~;

$sth->finish();
$dbh->disconnect;
}
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/
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2004-08-22 16:54.