webForumDet fria alternativet

Hämta info.

23 svar · 227 visningar · startad av Kent

KentMedlem sedan juli 2000355 inlägg
#1

Hur gör man för att öppna en txt fil och visa den på en speciell sida, ex, visa.cgi?id=12.?

flaerpMedlem sedan aug. 200030 inlägg
#2

Förstår inte riktigt hur du menar, men i princip gör man såhär för att öppna filen text.txt när man anropar med script.pl?file=text.txt

OBS: Väldigt osäker kod, ta inte denna i drift som den är - med denna kan man läsa varenda fil i hela systemet. Dessutom är den skriven helt ur minnet. :-)

#!/usr/bin/perl
#
#

use CGI qw(:standard escapeHTML);

print header();

open FILE, param('file') || die;

while(<FILE> ) {
  print $_;
}

close FILE;

Hoppas det gav lite klarhet i tillvaron.

KentMedlem sedan juli 2000355 inlägg
#3

Ex, jag anropar med script.pl?id=12 då ska 12.txt löppnas för läsning.

DemoMedlem sedan apr. 200137 inlägg
#4

Det värde som du sänder med ger du bara tillgägget .txt. Variabeln $filer skall innehålla sökvägen till mappen där filen du vill läsa till, finns lagrad.

//Demo

open (TEXT,"$filer/$INFO{'id'}.txt")&#0124;&#0124; print "Kan inte hitta \n";

while ($rad=<TEXT> ){
$rad=~/(.*)::(.*)/;
$INFO1=$1;
$INFO2=$2;
}
close (TEXT);

------------------
Den som vandrar ödmjukhetens väg drabbas inte av trafikstockningar.    

[Redigerat av Demo den 14 feb 2001]

KentMedlem sedan juli 2000355 inlägg
#5

Funkar inte med din kod demo, och det är inte min det är fel på, lägger jag till din kod funkar det inte, tar jag bort den funkar det bra.

KentMedlem sedan juli 2000355 inlägg
#6

Ingen annan som har någon bra kod.?

FlashXMedlem sedan nov. 19991 033 inlägg
#7

Båda alternativen fungerar nog om man ändrar förutsättningarna efter behovet.

Det är ju svårt att ge en helt fungerande kod om man t.ex inte vet hur resultatet ska skrivas ut.
Ska texten delas upp i olika värden?

Följande öppnar i.a.f. en fil och skriver ut den i befintligt skick.

#!/usr/bin/perl

use CGI qw(:standard);
my $action = (param('action')) ? param('action') : 'viewFile';

&headerHTML;
view_file()	if($action eq 'viewFile');

sub view_file {
	$id = param('id');
	
	open (FILE,"<$id.txt") or die "$id.txt: $!\n";
		@lines = <FILE>;
		close (FILE);

print <<TEXT;
<table>
<tr>
<td><font face="Verdana, Arial, Helvetica, sans-serif" size="2">@lines</font></td>
</tr>
</table>
TEXT
}

&footerHTML;

################

sub headerHTML {
print "Content-type: text/html\n\n";
print<<HEAD;
<html>
<head>
<title>Titeln</title>
</head>

<body>
HEAD
}

sub footerHTML {
print<<FOOT;
</body>
</html>
FOOT
}

Antaganden:
Textfilen finns i samma mapp som skriptet och om textfilen heter 12.txt så anges
skriptnamn.cgi?id=12 för att infoga filen i ett HTML-dokument.

Det finns utrymme för flera varianter och uppdelning av värden i textfilen (om dessa existerar) och andra "actions" kan enkelt läggas i andra subrutiner.
(subrutinen view_file körs som default utan action)

Du får pula lite själv och se hur det blir och återkom sedan om det finns speciella önskemål.

[Redigerat av FlashX den 17 feb 2001]

KentMedlem sedan juli 2000355 inlägg
#8

Hmm,, hur ska man hämta informationen med denna kod,
om filen ser ut så här ,
12::namn::rubrik::inlagg::datum
då ska detta hämtas ut på sidan,
det borde ju se ut så här eller något,
ID: $param('id');
Namn: $param('namn');
Rubrik: $param('rubrik');
eller.?

FlashXMedlem sedan nov. 19991 033 inlägg
#9

Efter close (FILE); kan du lägga till

foreach $line (@lines) {
($id, $namn, $rubrik, $inlagg, $datum) = split(/\:\:/, $line);
}

och sedan använder du dessa variabler i den HTML du vill skriva ut.

Exempelvis:

#!/usr/bin/perl

use CGI qw(:standard);
my $action = (param('action')) ? param('action') : 'viewFile';

&headerHTML;
view_file()	if($action eq 'viewFile');

sub view_file {
	$id = param('id');
	open (FILE,"<$id.txt") or die "$id.txt: $!\n";
		@lines = <FILE>;
		close (FILE);
		
		foreach $line (@lines) {
		($id, $namn, $rubrik, $inlagg, $datum) = split(/\:\:/, $line);
		
	print qq(
		<table>
		  <tr> 
		    <td colspan="2"> 
		      <hr size="1">
		    </td>
		  </tr>
		  <tr> 
		    <td><font face="Verdana" size="1">$id</font></td>
		    <td><b><font size="2" face="Verdana">$rubrik</font></b></td>
		  </tr>
		  <tr> 
		    <td><font face="Verdana" size="2"><b>$namn<br>
		      </b></font><font size="1" face="Verdana">$datum</font></td>
		    <td><font face="Verdana" size="2">$inlagg</font></td>
		  </tr>
		  <tr> 
		    <td colspan="2">&nbsp;</td>
		  </tr>
		</table>
		);
	}
}

&footerHTML;

################

sub headerHTML {
print "Content-type: text/html\n\n";
print<<HEAD;
<html>
<head>
<title>Titeln</title>
</head>

<body>
HEAD
}

sub footerHTML {
print<<FOOT;
</body>
</html>
FOOT
}

[Redigerat av FlashX den 18 feb 2001]

KentMedlem sedan juli 2000355 inlägg
#10

Ja nu verkar det ju funka riktigt bra, tack för hjälpen FlashX.!

FlashXMedlem sedan nov. 19991 033 inlägg
#11

Roligt att det fungerar :)
Redigerade dock koden ovan något, så den skriver ut alla rader i textfilen.
(ifall det var avsikten)

KentMedlem sedan juli 2000355 inlägg
#12

Vad redigerade du då, upptäckte det felet nu att den inte skrev ut allt.

FlashXMedlem sedan nov. 19991 033 inlägg
#13

Kolla mellan close (FILE); och &footerHTML; så ser du skillnaden mellan den kod du kopierade första gången.

Klicka på redigeraikonen när du kopierar texten så får du koden rätt formaterad.

KentMedlem sedan juli 2000355 inlägg
#14

Menar du, print qq(.?
testade detta men det fungerar inte,
den skriver alltså inte ut allt.

FlashXMedlem sedan nov. 19991 033 inlägg
#15

Ligger den innanför foreach-lopen så skriver den ut alla rader i textfilen.

KentMedlem sedan juli 2000355 inlägg
#16

Jo jag har den innanför, men skriver inte ut allt ändå.?

[Redigerat av Kent den 19 feb 2001]

FlashXMedlem sedan nov. 19991 033 inlägg
#17

Du får kolla igenom skriptet igen.
Varje rad i textfilen skrivs ut så som du bestämt mellan print qq( och );

Kolla också så det verkligen är flera rader i textfilen, så allt inte ligger på samma rad...

KentMedlem sedan juli 2000355 inlägg
#18

Hur menar du med flera rader i textfilen,?
så här ser den ut nu,
id::namn::rubrik::inlagg::datum::en massa html kod::html kod igen

FlashXMedlem sedan nov. 19991 033 inlägg
#19

Jag tar för givet att varje inlägg ligger i en egen rad.
Du skrev ovanför att värdena var indelade i

12::namn::rubrik::inlagg::datum

och då antar man att det ser ut så här i textfilen.
12::namn::rubrik::inlagg::datum
13::namn::rubrik::inlagg::datum
14::namn::rubrik::inlagg::datum
o.s.v.

Varför har du en massa html-kod i textfilen?
Tanken var att skriptet skriver ut sidan och infogar inläggen ifrån textfilen...

KentMedlem sedan juli 2000355 inlägg
#20

Jag tod bara som ex hur den ser, menar du att det inte går att hämta html kod med detta script.?

131 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)