Avatar billede manon Nybegynder
03. marts 2003 - 01:49 Der er 12 kommentarer og
2 løsninger

Bruge html koder (links mm) i et PHP <Form Method="post"> script?

Hej E

Jeg har et pænt lille php formscript, hvor jeg kan udfylde diverse felter med tekst.

Nu kunne jeg godt tænke mig at når der skrives en tekst at der også kan bruge html inde i selv teksten, såsom angivelse af links  (<a href="http://www.domæne.dk" target="_blank">http://www.domæne.dk/</a>) og billeder.


Tekstfeltet som ligger i denne <form> ser således ud:
<textarea name="tekst" cols="40" rows="5"><?php echo $tekst; ?></textarea>


Er der nogen som kan hjælpe?

vh\m.
Avatar billede human Nybegynder
03. marts 2003 - 02:09 #1
Jeg har denne her liggende:

$comm = stripslashes($comm);
$comm = str_replace("\"","&quot;",$comm);
$comm = str_replace("<","&lt;",$comm);
$comm = str_replace(">","&gt;",$comm);
$comm = str_replace("\n","<BR>",$comm);
$comm = str_replace("\\","&#92;",$comm);
$comm = str_replace("http://","",$comm);
$comm = ereg_replace("((w{3}|W{3})+.[a-zA-Z0-9:%_.~#-?&]+)",  "<a href=\"http://\\1\" CLASS=\"tekstlink\" TARGET=\"_blank\">\\1</a>",$comm);
$comm = ereg_replace("([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+.[a-zA-Z0-9._-]+)", "<a href=\"mailto:\\1\" CLASS=\"tekstlink\">\\1</a>",$comm);
$comm = str_replace("'","&#39;",$comm);

Her nede skal din INSERT INTO dintabel så komme.

Du kan jo redigere i den så den passer til det du skal bruge den til og have rettigheder til :o)
Avatar billede manon Nybegynder
03. marts 2003 - 02:19 #2
human >>

Uhadada - det er alt for voldsomt til mig på en gang - så meget forstand har jeg slet ikke på det til at kunne tyde dit forslag, så du må lige guide mig igennem. På forhånd tak.
Avatar billede human Nybegynder
03. marts 2003 - 02:19 #3
oki... prøv giv mig hele din php kode, så sætter jeg det ind for dig.
Avatar billede manon Nybegynder
03. marts 2003 - 02:33 #4
human >>
prøv at se om du kan få noget ud af denne bid kode:

<?php
    mysql_connect("mysql.domæne.dk","user_dk","password");
    mysql_select_db("user_dk");

    $montharray = array();
    $montharray["01"] = "januar";
    $montharray["02"] = "februar";
    $montharray["03"] = "marts";
    $montharray["04"] = "april";
    $montharray["05"] = "maj";
    $montharray["06"] = "juni";
    $montharray["07"] = "juli";
    $montharray["08"] = "august";
    $montharray["09"] = "september";
    $montharray["10"] = "oktober";
    $montharray["11"] = "november";
    $montharray["12"] = "december";

    function login($brugernavn, $kodeord) {
        if ($brugernavn == "brugernavn" && $kodeord == "password") {
            return true;
        } else {
            header("location: http://www.domæne.dk/sorry.php");
            exit;
        }
    }
   
    function add_article($titel, $tekst, $dato, $nummer, $skribent) {
        $tekst = nl2br($tekst);
        mysql_query("INSERT INTO artikler (titel, tekst, dato, nummer, skribent) VALUES ('$titel', '$tekst', '$dato', '$nummer', '$skribent')") or die(mysql_error());
    }

    function delete_article($article) {
        mysql_query("DELETE FROM artikler WHERE id=$article") or die(mysql_error());
    }

    if ($brugernavn && $kodeord) {
        login($brugernavn, $kodeord);
        if ($did) delete_article($did);

        if ($skribentjl && $skribentlj) $skribent = '<font color="#006600">'.$skribentjl.'</font> og <font color="#990000">'.$skribentlj.'</font>';
        else if ($skribentjl) $skribent = '<font color="#006600">'.$skribentjl.'</FONT>';
        else if ($skribentlj) $skribent = '<font color="#990000">'.$skribentlj.'</FONT>';
        else $skribent = "";
        if ($titel && $tekst) add_article(htmlentities($titel), htmlentities($tekst), $year."-".$month."-".$date, $nummer, $skribent);
    }
?>
<body bgcolor="#FFFFFF">
<FORM ACTION="side.php" METHOD="post" NAME="artiklerform">
  <?php if (!$brugernavn || !$kodeord) { ?>
  <br>
  <br>
  <BR>
<?php } else { ?>
<INPUT TYPE="hidden" NAME="brugernavn" VALUE="<?php echo $brugernavn; ?>">
<INPUT TYPE="hidden" NAME="kodeord" VALUE="<?php echo $kodeord; ?>">
  <table width="700" border="0" cellspacing="0" cellpadding="0" align="center" bgcolor="#006600">
    <tr>
     
     
 
   
    </tr>
    <tr>
      <td colspan="2">
        <div><br>
          <font color="#FFFFFF"><br>
          <br>
          <b><font color="#00CC00">Trin 1</font><br>
          </b>
          <input type="text" name="titel" maxlength="32" size="35" value="<?php echo $titel; ?>">
          <br>
          <b><font color="#00CC00">Trin 2</font><br>
          </b>
<textarea name="tekst" cols="40" rows="5"><?php echo $tekst; ?></textarea>
          <br>
          </font><br>
          <input type="submit" name="Submit2" value="klik for at oploade">
          <br>
          <br>
        </div>
        <div>
          <hr width="100%" size="2" color="#C0C0C0" NOSHADE>
          <br>
        </div>
        <div>
          <hr width="100%" size="2" color="#C0C0C0" NOSHADE>
        </div>
      </td>
    </tr>
  </table>
  &nbsp;
  <?php } ?>
</FORM>
Avatar billede human Nybegynder
03. marts 2003 - 10:10 #5
<?php
    mysql_connect("mysql.domæne.dk","user_dk","password");
    mysql_select_db("user_dk");

    $montharray = array();
    $montharray["01"] = "januar";
    $montharray["02"] = "februar";
    $montharray["03"] = "marts";
    $montharray["04"] = "april";
    $montharray["05"] = "maj";
    $montharray["06"] = "juni";
    $montharray["07"] = "juli";
    $montharray["08"] = "august";
    $montharray["09"] = "september";
    $montharray["10"] = "oktober";
    $montharray["11"] = "november";
    $montharray["12"] = "december";

    function login($brugernavn, $kodeord) {
        if ($brugernavn == "brugernavn" && $kodeord == "password") {
            return true;
        } else {
            header("location: http://www.domæne.dk/sorry.php");
            exit;
        }
    }
   
    function add_article($titel, $tekst, $dato, $nummer, $skribent) {
   
$tekst = stripslashes($tekst);
$tekst = str_replace("\"","&quot;",$tekst);
$tekst = str_replace("<","&lt;",$tekst);
$tekst = str_replace(">","&gt;",$tekst);
$tekst = str_replace("\n","<BR>",$tekst);
$tekst = str_replace("\\","&#92;",$tekst);
$tekst = str_replace("http://","",$tekst);
$tekst = ereg_replace("((w{3}|W{3})+.[a-zA-Z0-9:%_.~#-?&]+)",  "<a href=\"http://\\1\" CLASS=\"tekstlink\" TARGET=\"_blank\">\\1</a>",$tekst);
$tekst = ereg_replace("([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+.[a-zA-Z0-9._-]+)", "<a href=\"mailto:\\1\" CLASS=\"tekstlink\">\\1</a>",$tekst);
$tekst = str_replace("'","&#39;",$tekst);

        mysql_query("INSERT INTO artikler (titel, tekst, dato, nummer, skribent) VALUES ('$titel', '$tekst', '$dato', '$nummer', '$skribent')") or die(mysql_error());
    }

    function delete_article($article) {
        mysql_query("DELETE FROM artikler WHERE id=$article") or die(mysql_error());
    }

    if ($brugernavn && $kodeord) {
        login($brugernavn, $kodeord);
        if ($did) delete_article($did);

        if ($skribentjl && $skribentlj) $skribent = '<font color="#006600">'.$skribentjl.'</font> og <font color="#990000">'.$skribentlj.'</font>';
        else if ($skribentjl) $skribent = '<font color="#006600">'.$skribentjl.'</FONT>';
        else if ($skribentlj) $skribent = '<font color="#990000">'.$skribentlj.'</FONT>';
        else $skribent = "";
        if ($titel && $tekst) add_article(htmlentities($titel), htmlentities($tekst), $year."-".$month."-".$date, $nummer, $skribent);
    }
?>
<body bgcolor="#FFFFFF">
<FORM ACTION="side.php" METHOD="post" NAME="artiklerform">
  <?php if (!$brugernavn || !$kodeord) { ?>
  <br>
  <br>
  <BR>
<?php } else { ?>
<INPUT TYPE="hidden" NAME="brugernavn" VALUE="<?php echo $brugernavn; ?>">
<INPUT TYPE="hidden" NAME="kodeord" VALUE="<?php echo $kodeord; ?>">
  <table width="700" border="0" cellspacing="0" cellpadding="0" align="center" bgcolor="#006600">
    <tr>
     
     
 
   
    </tr>
    <tr>
      <td colspan="2">
        <div><br>
          <font color="#FFFFFF"><br>
          <br>
          <b><font color="#00CC00">Trin 1</font><br>
          </b>
          <input type="text" name="titel" maxlength="32" size="35" value="<?php echo $titel; ?>">
          <br>
          <b><font color="#00CC00">Trin 2</font><br>
          </b>
<textarea name="tekst" cols="40" rows="5"><?php echo $tekst; ?></textarea>
          <br>
          </font><br>
          <input type="submit" name="Submit2" value="klik for at oploade">
          <br>
          <br>
        </div>
        <div>
          <hr width="100%" size="2" color="#C0C0C0" NOSHADE>
          <br>
        </div>
        <div>
          <hr width="100%" size="2" color="#C0C0C0" NOSHADE>
        </div>
      </td>
    </tr>
  </table>
  &nbsp;
  <?php } ?>
</FORM>


Her er jeg så gået ud fra det er i ditn tekst felt du vil have det skal virke det med links, hvis ikke ændre du bare der hvor der stå $tekst til et andet felt.

Nu er du også sikker på der ikke er nogle ondsindede mennesker der fyrer klamme javascripts af i din tagwall eller hvad det nu er du er igang med at lave :o)


// Human
Avatar billede manon Nybegynder
03. marts 2003 - 12:38 #6
Human >>

Hmmm .. det ser ikke ud til at virke.

Måske er det mig der ikke lige forstår det, men hvis jeg skriver en tekst hvor jeg gerne vil have et aktiv link med i teksten - hvordan ville du så skrive den tekst?

eks.:
"I dag vil jeg gerne byde velkommen til Human som har en webside der hedder www.human.org (link) og du kan skrive til ham på human@human.org (maillink)"

Teksten - sådan som jeg forstår det, vil så se således ud når den sættes ind i feltet:
"I dag vil jeg gerne byde velkommen til Human som har en webside der hedder <a href="www.human.org">www.human.org </a>og du kan skrive til ham p&aring; <a href="mailto:human@human.org">human@human.org</a> "


Det kan måske ikke lade sig gøre?
Avatar billede swaxi Nybegynder
03. marts 2003 - 13:12 #7
eh ... sådan ?
<textarea name="tekst" cols="40" rows="5"><?php echo rawurlencode($tekst); ?></textarea>
Avatar billede human Nybegynder
03. marts 2003 - 13:59 #8
swaxi: self, men så er det alt teksten det bliver gjort ved, tror ikke det er det der er meningen.
Avatar billede swaxi Nybegynder
03. marts 2003 - 14:04 #9
well ...
<textarea name="tekst" cols="40" rows="5"><?php echo htmlspecialchars($tekst); ?></textarea>
Avatar billede manon Nybegynder
03. marts 2003 - 14:19 #10
begge >>
det enste jeg ønsker er at kunne skrive et link/email adr. i tekstfeltet og som der så kan klikkes på når jeg henter teksten frem vha. en anden side.
Avatar billede swaxi Nybegynder
03. marts 2003 - 17:37 #11
manon >> men uddyb lige lidt ... ønsker du at du skal skrive htmlkode i dit textfield, eller ønsker du at scriptet outomatisk skal opdage noget, der ligner mail-addresser/links og så lave dem om til links for dig?
Avatar billede manon Nybegynder
03. marts 2003 - 17:45 #12
swaxi >>
Jo, hvis den selv kan finde ud af det, så er det jo perfekt, men det behøves ikke.
Avatar billede human Nybegynder
03. marts 2003 - 17:48 #13
Well.. Det er nøjagtig hvad den kode jeg gav dig gør :o). Prøv skriv www.exp.dk i tekst feltet, post det og se hvad der sker.

Du sgade tidligere det ikke virkede, kommer der nogle fejlbeskeder?
Avatar billede swaxi Nybegynder
03. marts 2003 - 18:17 #14
manon >> hvis der ikke skal ske noget automagisk, så er min løsning med htmlspecialchars() rigeligt. hvis du derimod vil have at scriptet skal være 'smart', så vil jeg tro human's løsning virker, når han siger det. ellers kan du også prøve med tagster, den gør det samme som human's kode (http://www.ljweb.com/?Ref=usefulscripts)
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