View Full Version : Jag skulle vilja kunna......
Från en html webform låta användare fylla i ett antal urls sen spara det till en data.txt dom skrivs över när det är en ny användare-hur gör man det???
Hur vet man at det är en i taget :-)???
Vore väldigt tacksam för hjälp!!!
BwA
Ok, jag vet inte vilken av delarna du vill ha hjälp med men;
use CGI;
$urls = CGI::param('fält1') . "\t" . CGI::param('fält2') . "\t" . CGI::param('fält3'); # Osv så många fält du vill ha.
$urls =~ s/\t\t+/\t/g; # rensa bort angränsare mellan icke ifyllda fält
# Skriv till fil.
open(OUTDATA,">datafil.tab") | | die('Kan inte skriva till datafil.tab');
print OUTDATA $urls;
close(OUTDATA);
Det som nu står i filen är tab-separerade url'er (får man hoppas), och filen skrivs över varje gång.
------------------
/ J
[Redigerat av Jojoxx den 21 jun 2000]
[Redigerat av Jojoxx den 21 jun 2000]
Jag är ingen programerare...:)
open(OUTDATA,">datafil.tab")
ska jag byta datafil.tab till mindatafil.txt???
Sen vill jag bara ha en användare i taget :)
Måste nog fan plugga lite perl .-)
BwA
Det är ju inte så svårt att komma igång med cgi.
Eftersom Cgi kan skrivas i 10 olika program språk så bör man nog koncentrera sig på 1 dock.
Finns massvis med bra literatur om Cgi.
------------------
MVH / Coercri
Japp, datafil.tab skulle kunna heta vad_du_vill.ada om du så ville det :e
För att låsa filen så att bara en användare i taget kan skriva till den gör så här..
use CGI;
$urls = CGI::param('fält1') . "\t" . CGI::param('fält2') . "\t" . CGI::param('fält3'); # Osv så många fält du vill ha.
$urls =~ s/\t\t+/\t/g; # rensa bort angränsare mellan icke ifyllda fält
# Skriv till fil.
open(OUTDATA,">datafil.tab") | | die('Kan inte skriva till datafil.tab');
flock (OUTDATA,2);
print OUTDATA $urls;
close(OUTDATA);
[Redigerat av Qaz den 22 jun 2000]
Tack Alla Och Glad Midsommar!!!!
:)Återkommer efter ........
BwA
För att låsa filen så att bara en användare i taget kan skriva till den gör så här ...
Mja, skall vi titta lite på den koden. :)
open(OUTDATA,">datafil.tab") | | die('Kan inte skriva till datafil.tab');
Här öppnar du filen för skrivning, och raderar samtidigt innehållet i den.
flock (OUTDATA,2);
Här kör du flock. Problemet är bara att innehållet i filen raderas redan vid öppningen, innan du kör flock. Du riskerar alltså att radera innehållet i en fil som någon annan redan håller på med, och det kanske inte är så lyckat alla gånger.
Det här problemet tas upp i dokumentationen (http://www.perl.com/newdocs/pod/perlopentut.html#File_Locking), och där finns också förslag på lösningar.
Dessutom bör du även kolla så att fillåsningen lyckades:
flock (OUTDATA,2) | | die ('Kunde inte låsa datafil.tab');
------------------
Robban < robban@lipogram.com >
vBulletin® v3.8.6, Copyright ©2000-2013, Jelsoft Enterprises Ltd.