Avatar billede kolzie Nybegynder
29. maj 2002 - 20:44 Der er 15 kommentarer og
2 løsninger

Problem med en Tagwall

Jeg har et problem med følgende tagwall:

<?php
$stopord = array('anal-sex','anal','analsex','sut','bolle','knep','oralsex',
'oral-sex','mini-pik','penis','sex','pik','pis','fuck','kneppe','pisse');
$error = '';
$kommentar = str_replace($stopord, '', $kommentar);

if($farve && $navn && $tag) {
$tag = ereg_replace("<","&lt;",$tag);
$tag = ereg_replace(">","&gt;",$tag);

$fil = "tagwall.txt";
$mam = time() - 7200;
$tid = date("G:i:s",$mam);
$str = "<tr><td valign=\"top\">$tid</td>".
"<td valign=\"top\" nowrap><a href=\"mailto:$email\">$navn</a></td>".
"<td><font color=\"$farve\" valign=\"top\">$tag</font></td></tr>\n";

if($filArray == file($fil)) {
$result = implode("", $filArray);
$result = $str.$result;
} else {
$error .= "Kunne ikke læse datafilen. ";
}

$fp = fopen($fil, 'w');
if($fp) {
fputs($fp, $result);
fclose($fp);
} else {
$error .= 'Kunne ikke skrive til datafilen. ';
}

if ($error == '') {
header("Location: http://$HTTP_HOST.$SCRIPT_NAME");
exit;
} else {
echo $error;
}
}
readfile("tagwall.txt");
?>

Det kan ses på http://www.friserverplads.dk/kolzie/tagwall.html - som er en testside. Siden den kommer til at ligge på er www.psptuts.tk ...


/Kolzie - www.psptuts.tk
Avatar billede kolzie Nybegynder
29. maj 2002 - 20:45 #1
Fejlene der kommer er:


Warning: Bad arguments to implode() in E:\Webs\friserverplads.dk\kolzie\tagwall.php on line 19

Warning: Cannot add header information - headers already sent by (output started at E:\Webs\friserverplads.dk\kolzie\tagwall.php:19) in E:\Webs\friserverplads.dk\kolzie\tagwall.php on line 34
Avatar billede jakoba Nybegynder
29. maj 2002 - 20:54 #2
funktionen header(...) kan kun sendes hvis der ikke tidligere i filen er skrevet noget til den outputfil der skal sendes til browseren.

selv et linieskift foran første <? gør det umuligt at sende header.

din linie
    if($filArray == file($fil))
giver ikke $filarray nogen værdi.  ==  er kun sammenligning. lav istedet 2 linier:
    $filArray = file($fil);
    if( $filArray.length >0 ) // lidt usikker her, check i manualen :-)

mch JakobA
Avatar billede jakoba Nybegynder
29. maj 2002 - 20:57 #3
Ups. Det er ikke  $filArray.length  men  count($filArray)
Avatar billede kolzie Nybegynder
29. maj 2002 - 21:12 #4
Mjaa.. Jeg tror du fik hjulpet mig ud af det oprindelige problem. Nu kommer der en parse error på linie 41. Og af hvad jeg sådan lige kunne se står der readfile("tagwall.txt");  på linie 41 (?!)
Avatar billede jakoba Nybegynder
29. maj 2002 - 21:20 #5
Lige den linie ser fin ud. og siden vi er så tæt på enden af filen vil jeg gætte på at fejlen snarere er at der ikke er balance i dine { og } tegn.

Et godt middel mod det er at lave indrykninger istedet for at starte alle linier nelt ude til venstre:

if($farve && $navn && $tag) {
    $tag = ereg_replace("<","&lt;",$tag);
    $tag = ereg_replace(">","&gt;",$tag);

    $fil = "tagwall.txt";
    $mam = time() - 7200;
    $tid = date("G:i:s",$mam);
    $str = "<tr><td valign="top">$tid</td>".
"<td valign="top" nowrap><a href="mailto:$email">$navn</a></td>".
"<td><font color="$farve" valign="top">$tag</font></td></tr>n";

    if($filArray == file($fil)) {
        $result = implode("", $filArray);
        $result = $str.$result;
    } else {
        $error .= "Kunne ikke læse datafilen. ";
    }

...osv

Det kan godt være det er noget andet, men gørd det alligevel. det giver også bedre overblok over programmet.

mvh JakobA
Avatar billede kolzie Nybegynder
29. maj 2002 - 21:37 #6
Det var dog de mest irriterrende fejl, der kommer nu er det på linie 40 den er gal, og der står der } (med en indrykning). Hvad kan det nu skyldes?
Avatar billede jakoba Nybegynder
29. maj 2002 - 21:48 #7
Parse error: parse error in E:\Webs\friserverplads.dk\kolzie\tagwall.php on line 40

den der adresse  E:\Webs\... ser ud somom scriptet prøver at referere til din E: disk.

men det kan også god være det er sådan friserverplads har stillet deres server op.
Avatar billede kolzie Nybegynder
29. maj 2002 - 21:53 #8
Jeg har ikke nogen E: Disk, så går ud fra at det er FSP's måde at stille det op på..
Avatar billede jakoba Nybegynder
29. maj 2002 - 21:57 #9
prøv at lægge hele .php filen ind her som den ser id lige nu.
Avatar billede -zeattle- Nybegynder
29. maj 2002 - 22:00 #10
heh jeg har en tagwall i en fil som virker
Avatar billede kolzie Nybegynder
29. maj 2002 - 22:01 #11
??? Forstår ikke helt hvad du mener?
Avatar billede kolzie Nybegynder
29. maj 2002 - 22:01 #12
(det var sagt til JakobA)
-Zeattle->> Jeg er alligevel i gang med at øve mig på PHP, så vil gerne se et af mine egne projekter lykkes :)
Avatar billede tipsen Nybegynder
30. maj 2002 - 01:26 #13
Det ser godt nok ud til, at det er en kedelig tagwall, men du skal måske være opmærksom på, at str_replace er case-sensitiv, hvilket betyder at bl.a:

'ANAL-SEX','ANAL','ANALSEX','SUT','BOLLE','KNEP','ORALSEX','ORAL-SEX','MINI-PIK','PENIS','SEX','PIK','PIS','FUCK','KNEPPE','PISSE'

ikke bliver snuppet af dit script... ;-)

NB: Du burde måske også kigge nærmere på funktionerne: strip_tags(), addslashes() og stripslashes(), som du nok kan bruge til noget!
Avatar billede kolzie Nybegynder
30. maj 2002 - 16:08 #14
Tipsen>
Det hjalp mig jo ikke så meget...
Avatar billede kolzie Nybegynder
30. maj 2002 - 18:18 #15
JakobA>>
Her har du den :)

<?php
$stopord = array('anal-sex','anal','analsex','sut','bolle','knep','oralsex',
'oral-sex','mini-pik','penis','sex','pik','pis','fuck','kneppe','pisse');
$error = '';
$kommentar = str_replace($stopord, '', $kommentar);

if($farve && $navn && $tag) {
$tag = ereg_replace("<","&lt;",$tag);
$tag = ereg_replace(">","&gt;",$tag);

$fil = "tagwall.txt";
$mam = time() - 7200;
$tid = date("G:i:s",$mam);
$str = "<tr><td valign=\"top\">$tid</td>".
"<td valign=\"top\" nowrap><a href=\"mailto:$email\">$navn</a></td>".
"<td><font color=\"$farve\" valign=\"top\">$tag</font></td></tr>\n";
$filArray = file($fil);
if( $filArray.length >0 )

$result = implode("", $filArray);
$result = $str.$result;
    } else {
$error .= "Kunne ikke læse datafilen. ";
    }

$fp = fopen($fil, 'w');
if($fp) {
fputs($fp, $result);
fclose($fp);
    } else {
$error .= 'Kunne ikke skrive til datafilen. ';
    }

if ($error == '') {
header("Location: http://$HTTP_HOST.$SCRIPT_NAME");
exit;
    } else {
echo $error;
    }
    }
readfile("tagwall.txt");
?>
Avatar billede kolzie Nybegynder
01. juni 2002 - 18:29 #16
Hmm lukker. 10 point til JakobA, fordi han hjalp mig i gennem noget af det
Avatar billede tipsen Nybegynder
03. juni 2002 - 23:16 #17
kolzie: Jeg er klar over at jeg ikke besvarede dit spørgsmål, hvorfor jeg også kun lagde en kommentar - men hvis du kigger på de funktioner jeg nævner, vil du se at du kan bruge dem!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester