Avatar billede Slettet bruger
01. september 2005 - 15:20 Der er 40 kommentarer og
1 løsning

Skrive med HTML

Hej alle sammen - jeg vil godt have sådan at statusen ejer kan skrive med HTML i tagwall.


Min tagwall ser sådan ud:

<?
session_start();
if (session_is_registered("brugernavn") AND ("kodeord")) {
include "config.php";
$hent = mysql_query("SELECT * FROM community WHERE brugernavn = '$_SESSION[brugernavn]'") or die(mysql_error());
$vis = mysql_fetch_array($hent);
?>

<?
if($_POST[action] == "skriv") {
if($_POST[tekst] == "") {
print "<font color=black>Skriv noget!</font><br><br>";
}else{

include "config.php";
$navn = $_SESSION[brugernavn];
$farve = $_POST[farve];
$tekst = htmlspecialchars($_POST[tekst]);
$dato = date('d/m/Y H:i:s');
$ip = $_SERVER[REMOTE_ADDR];
mysql_query("INSERT INTO tagwall (navn, dato, tekst, farve, ip) VALUES ('$navn', '$dato', '$tekst', '$farve', '$ip')");
}
}
?>
<html>
<head>

<link rel="stylesheet" HREF="style.css" type="text/css">

</head>
<form action="index.php" method="post">
<input type="hidden" name="action" value="skriv">
<?
include "config.php";
$admin = mysql_query("SELECT * FROM community WHERE brugernavn = '$_SESSION[brugernavn]'") or die(mysql_error());
$vis_admin = mysql_fetch_array($admin);
if($vis_admin[status] == "Ejer") {
print "<input type='hidden' name='farve' value='#CKDJ54'>";
?><input type="text" name="tekst" size="20" style="border: 1px solid #000000"><br>
<input type="submit" name="submit" value="Tag it" style="border:1px solid #000000; font-size:12; background-color:#FFFFFF">
<input type="reset" name="reset" value="Forfra" style="border-style: solid; border-width: 1px; font-size:12; background-color:#FFFFFF">&nbsp;
<button class="button" onclick="window.location='index.php'" style="font-size: 12; border: 1px solid #000000; background-color: #FFFFFF">
Opdater
</button></form>
<br>
<?
$num = mysql_query("SELECT * FROM tagwall ORDER BY id DESC");
$all_tags = mysql_num_rows($num);
echo("Tags ialt <b>".$all_tags."</b>.");
?>
&nbsp;
<?
$query = mysql_query("SELECT * FROM tagwall WHERE navn = '$_SESSION[brugernavn]'") or die(mysql_error());
$you_tags = mysql_num_rows($query);
echo("Du har skrevet <b>".$you_tags."</b> tags.");
?>
<br><br>
<?
}
}
if($_GET[vis] == "alle") {
include "config.php";
$hent_beskeder = mysql_query("SELECT * FROM tagwall ORDER BY id DESC") or die(mysql_error());
while($vis_beskeder = mysql_fetch_array($hent_beskeder)) {
?>
<hr style="BORDER-RIGHT: #333333 3px dotted; BORDER-TOP: #333333 3px dotted; BORDER-LEFT: #333333 3px dotted; BORDER-BOTTOM: #333333 3px dotted" SIZE="1" color="#D4DFEC">

<b><font color="<? echo $vis_beskeder[farve]; ?>"><? echo $vis_beskeder[navn]; ?></font></b> 
- D. <? echo $vis_beskeder[dato]; ?><br>
<? echo $vis_beskeder[tekst]; ?><br>
<?
}
}
?>

</body></html>

<?
}else{
print "<link rel='stylesheet' HREF='style.css' type='text/css'><font color=red>Du skal være logget ind for at kunne skrive i tagwall'en!</font>";
}
?>
Avatar billede jaw Nybegynder
01. september 2005 - 16:02 #1
Kan alle skrive med HTML nu?
Avatar billede jaw Nybegynder
01. september 2005 - 16:07 #2
Nej, det kan de ikke :)

Den nemmeste måde, som jeg ser det, er at udskifte din htmlspecialchars($_POST['tekst']) og lave den en smule om.

if($status == "ejer") {
  $tekst = mysql_real_escape_string($_POST['tekst']);
} else {
  $tekst = strip_tags(mysql_real_escape_string($_POST['tekst']));
}
navn = $_SESSION['brugernavn'];
$farve = $_POST['farve'];
$dato = date('d/m/Y H:i:s');
$ip = $_SERVER['REMOTE_ADDR'];
mysql_query("INSERT INTO tagwall (navn, dato, tekst, farve, ip) VALUES ('$navn', '$dato', '$tekst', '$farve', '$ip')");

Prøv det :)
Avatar billede jaw Nybegynder
01. september 2005 - 16:12 #3
Alternativt, hvis du vil beholde din htmlspecialchars():

if($status == "ejer") {
  $tekst = htmlspecialchars($_POST['tekst']);
  $tekst = str_replace("&lt;", "<", $tekst);
  $tekst = str_replace("&gt;", ">", $tekst);
} else {
  $tekst = htmlspecialchars($_POST['tekst']);
}
$navn = $_SESSION['brugernavn'];
$farve = $_POST['farve'];
$dato = date('d/m/Y H:i:s');
$ip = $_SERVER['REMOTE_ADDR'];
mysql_query("INSERT INTO tagwall (navn, dato, tekst, farve, ip) VALUES ('$navn', '$dato', '$tekst', '$farve', '$ip')");
Avatar billede jaw Nybegynder
01. september 2005 - 16:16 #4
Og hvis det så skal være helt godt, så der ikke kommer problemer hvis brugeren bruger " eller ', så vil jeg tilføje lidt så det bliver:

if($status == "ejer") {
  $tekst = mysql_real_escape_string(htmlspecialchars($_POST['tekst']));
  $tekst = str_replace("&lt;", "<", $tekst);
  $tekst = str_replace("&gt;", ">", $tekst);
} else {
  $tekst = mysql_real_escape_string(htmlspecialchars($_POST['tekst']));
}
$navn = $_SESSION['brugernavn'];
$farve = $_POST['farve'];
$dato = date('d/m/Y H:i:s');
$ip = $_SERVER['REMOTE_ADDR'];
mysql_query("INSERT INTO tagwall (navn, dato, tekst, farve, ip) VALUES ('$navn', '$dato', '$tekst', '$farve', '$ip')");

Og så i din udskrift:
<? echo striptags($vis_beskeder[tekst]); ?>

:)
Avatar billede Slettet bruger
01. september 2005 - 16:52 #5
Første og anden dur ikke..
Avatar billede jaw Nybegynder
01. september 2005 - 16:54 #6
Hvad med 3. ?

Og har du tilpasset if($status == "ejer") ? Jeg ved jo ikke hvor statusen kommer fra, så hvis det f.eks. er en session, så skal det jo være if($_SESSION['status'] == "ejer") etc.
Avatar billede Slettet bruger
01. september 2005 - 17:05 #7
Nej det er ikke session..

Får fejlen:

Fatal error: Call to undefined function: striptags()

"Adressen siger jeg ikke"
Avatar billede jaw Nybegynder
01. september 2005 - 17:10 #8
Den hedder jo også strip_tags()
Avatar billede Slettet bruger
01. september 2005 - 17:11 #9
Ja men det virker jo ikke..
Avatar billede jaw Nybegynder
01. september 2005 - 17:11 #10
Men jeg tror 3. forslag også er det der passer bedst til det du vil have...
Avatar billede Slettet bruger
01. september 2005 - 17:12 #11
Det er nummer 3 der ikke virker.....
Avatar billede jaw Nybegynder
01. september 2005 - 17:13 #12
Ah, nu ved jeg det. Det er fordi jeg skrev:
<? echo striptags($vis_beskeder[tekst]); ?>

der skal stå:
<? echo stripslashes($vis_beskeder[tekst]); ?>

Det var fingrene, der ville andet end hovedet :)
Avatar billede Slettet bruger
01. september 2005 - 17:16 #13
Den skriver bare tekst.!!!
Avatar billede jaw Nybegynder
01. september 2005 - 17:20 #14
Hvad gør du? Hvad indtaster du i feltet? Og du må også meget gerne lige paste den del der omhandler insert igen.
Avatar billede Slettet bruger
01. september 2005 - 17:20 #15
<?
session_start();
if (session_is_registered("brugernavn") AND ("kodeord")) {
include "config.php";
$hent = mysql_query("SELECT * FROM community WHERE brugernavn = '$_SESSION[brugernavn]'") or die(mysql_error());
$vis = mysql_fetch_array($hent);
?>

<?
if($_POST[action] == "skriv") {
if($_POST[tekst] == "") {
print "<font color=black>Skriv noget!</font><br><br>";
}else{

include "config.php";
$navn = $_SESSION[brugernavn];
$farve = $_POST[farve];
$tekst = htmlspecialchars($_POST[tekst]);
$dato = date('d/m/Y H:i:s');
$ip = $_SERVER[REMOTE_ADDR];
mysql_query("INSERT INTO tagwall (navn, dato, tekst, farve, ip) VALUES ('$navn', '$dato', '$tekst', '$farve', '$ip')");
}
}
?>
<html>
<head>

<link rel="stylesheet" HREF="style.css" type="text/css">

</head>
<form action="index.php" method="post">
<input type="hidden" name="action" value="skriv">
<?
include "config.php";
$admin = mysql_query("SELECT * FROM community WHERE brugernavn = '$_SESSION[brugernavn]'") or die(mysql_error());
$vis_admin = mysql_fetch_array($admin);
if($vis_admin[status] == "Ejer") {
print "<input type='hidden' name='farve' value='#CKDJ54'>";
?><input type="text" name="tekst" size="20" style="border: 1px solid #000000"><br>
<input type="submit" name="submit" value="Tag it" style="border:1px solid #000000; font-size:12; background-color:#FFFFFF">
<input type="reset" name="reset" value="Forfra" style="border-style: solid; border-width: 1px; font-size:12; background-color:#FFFFFF">&nbsp;
<button class="button" onclick="window.location='index.php'" style="font-size: 12; border: 1px solid #000000; background-color: #FFFFFF">
Opdater
</button></form>
<br>
<?
$num = mysql_query("SELECT * FROM tagwall ORDER BY id DESC");
$all_tags = mysql_num_rows($num);
echo("Tags ialt <b>".$all_tags."</b>.");
?>
&nbsp;
<?
$query = mysql_query("SELECT * FROM tagwall WHERE navn = '$_SESSION[brugernavn]'") or die(mysql_error());
$you_tags = mysql_num_rows($query);
echo("Du har skrevet <b>".$you_tags."</b> tags.");
?>
<br><br>
<?
}
}
if($_GET[vis] == "alle") {
include "config.php";
$hent_beskeder = mysql_query("SELECT * FROM tagwall ORDER BY id DESC") or die(mysql_error());
while($vis_beskeder = mysql_fetch_array($hent_beskeder)) {
?>
<hr style="BORDER-RIGHT: #333333 3px dotted; BORDER-TOP: #333333 3px dotted; BORDER-LEFT: #333333 3px dotted; BORDER-BOTTOM: #333333 3px dotted" SIZE="1" color="#D4DFEC">

<b><font color="<? echo $vis_beskeder[farve]; ?>"><? echo $vis_beskeder[navn]; ?></font></b> 
- D. <? echo $vis_beskeder[dato]; ?><br>
<? echo $vis_beskeder[tekst]; ?><br>
<?
}
}
?>

</body></html>

<?
}else{
print "<link rel='stylesheet' HREF='style.css' type='text/css'><font color=red>Du skal være logget ind for at kunne skrive i tagwall'en!</font>";
}
?>
Avatar billede Slettet bruger
01. september 2005 - 17:21 #16
Ups ja jeg indtaster bare <B> og <b>
Avatar billede jaw Nybegynder
01. september 2005 - 17:22 #17
Det du pastede der, er jo fuldstændig identisk med det du skrev i dit spørgsmål?! Der er jo ikke tilpasset til mine løsninger?
Avatar billede Slettet bruger
01. september 2005 - 17:26 #18
Så skriver jeg din løsning - samtidig fik jeg lejligheden til at ændre noget andet osv:


<?
session_start();
if (session_is_registered("brugernavn") AND ("kodeord")) {
include "config.php";
$hent = mysql_query("SELECT * FROM community WHERE brugernavn = '$_SESSION[brugernavn]'") or die(mysql_error());
$vis = mysql_fetch_array($hent);
?>

<?
if($_POST[action] == "skriv") {
if($_POST[tekst] == "") {
print "<font color=black>Skriv noget!</font><br><br>";
}else{

include "config.php";
if($_SESSION['status'] == "Ejer") {
  $tekst = mysql_real_escape_string(htmlspecialchars($_POST['tekst']));
  $tekst = str_replace("&lt;", "<", $tekst);
  $tekst = str_replace("&gt;", ">", $tekst);
} else {
  $tekst = mysql_real_escape_string(htmlspecialchars($_POST['tekst']));
}
$navn = $_SESSION[brugernavn];
$farve = $_POST[farve];
$tekst = htmlspecialchars($_POST[tekst]);
$dato = date('d.m H:i:s');
$ip = $_SERVER[REMOTE_ADDR];
mysql_query("INSERT INTO tagwall (navn, dato, tekst, farve, ip) VALUES ('$navn', '$dato', '$tekst', '$farve', '$ip')");
}
}
?>
<html>
<head>

<link rel="stylesheet" HREF="style.css" type="text/css">

</head>
<form action="index.php" method="post">
<input type="hidden" name="action" value="skriv">
<?
include "config.php";
$admin = mysql_query("SELECT * FROM community WHERE brugernavn = '$_SESSION[brugernavn]'") or die(mysql_error());
$vis_admin = mysql_fetch_array($admin);
if($vis_admin[status] == "Ejer") {
print "<input type='hidden' name='farve' value='#GREEN'>";
?><input style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; FONT-SIZE: 8pt; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" name="tekst" value="Din besked" onFocus="if(this.value=='Din besked'){this.value=''}" onBlur="if(this.value==''){this.value='Din besked'}" size="34">&nbsp;<input type="submit" name="submit" value="Skriv" style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; FONT-SIZE: 8pt; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff">&nbsp;<button class="button" onclick="window.location='index.php'" style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; FONT-SIZE: 8pt; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff">Opdater</button>&nbsp;<button class="button" onclick="window.location='../login_menu.php'" style="BORDER-RIGHT: #000000 2px solid; BORDER-TOP: #000000 2px solid; FONT-SIZE: 8pt; BORDER-LEFT: #000000 2px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff">Funks.</button>&nbsp;<button class="button" onclick="window.location='index.php?vis=alle'" style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; FONT-SIZE: 8pt; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff">Alle tags</button></form>
<br>
<?
$num = mysql_query("SELECT * FROM tagwall ORDER BY id DESC");
$all_tags = mysql_num_rows($num);
echo("Tags ialt <b>".$all_tags."</b>.");
?>
&nbsp;
<?
$query = mysql_query("SELECT * FROM tagwall WHERE navn = '$_SESSION[brugernavn]'") or die(mysql_error());
$you_tags = mysql_num_rows($query);
echo("Du har skrevet <b>".$you_tags."</b> tags.");
?>
<br><br>
<?
if($_GET[vis] == "" OR $_GET[vis] == "nyeste") {
include("config.php");
$hent_beskeder = mysql_query("SELECT * FROM tagwall ORDER BY id DESC LIMIT 20") or die(mysql_error());
while($vis_beskeder = mysql_fetch_array($hent_beskeder)) {
?>
<hr style="BORDER-RIGHT: #333333 3px dotted; BORDER-TOP: #333333 3px dotted; BORDER-LEFT: #333333 3px dotted; BORDER-BOTTOM: #333333 3px dotted" SIZE="1" color="#D4DFEC">

<b><font color="<? echo $vis_beskeder[farve]; ?>"><? echo $vis_beskeder[navn]; ?></font></a></b> 
- D. <? echo $vis_beskeder[dato]; ?><br>
<? echo stripslashes($vis_beskeder[tekst]); ?><br>
<?
}
}
if($_GET[vis] == "alle") {
include "config.php";
$hent_beskeder = mysql_query("SELECT * FROM tagwall ORDER BY id DESC") or die(mysql_error());
while($vis_beskeder = mysql_fetch_array($hent_beskeder)) {
?>
<hr style="BORDER-RIGHT: #333333 3px dotted; BORDER-TOP: #333333 3px dotted; BORDER-LEFT: #333333 3px dotted; BORDER-BOTTOM: #333333 3px dotted" SIZE="1" color="#D4DFEC">

<b><font color="<? echo $vis_beskeder[farve]; ?>"><? echo $vis_beskeder[navn]; ?></font></b> 
- D. <? echo $vis_beskeder[dato]; ?><br>
<? echo $vis_beskeder[tekst]; ?><br>

</body></html>
<?
}else{
print "<font color=black>Login*</font>";
}
?>
Avatar billede jaw Nybegynder
01. september 2005 - 17:28 #19
Yes. Men 2 ting:

1:
Denne linie:
$tekst = htmlspecialchars($_POST[tekst]);
... den skal væk! Ellers overrider du jo, hvad du netop har lavet i if-else'n.

2:
Du mangler stadig stripslashes() på din udskrift:
<? echo $vis_beskeder[tekst]; ?>
Avatar billede jaw Nybegynder
01. september 2005 - 17:28 #20
Doh!

<? echo stripslashes($vis_beskeder[tekst]); ?>
Avatar billede Slettet bruger
01. september 2005 - 17:29 #21
Nummer to fatter jeg ikke lige..
Avatar billede jaw Nybegynder
01. september 2005 - 17:30 #22
Kan du finde linien:
<? echo $vis_beskeder[tekst]; ?>
ca. i bunden af din kode? Den skal så udskiftes med:
<? echo stripslashes($vis_beskeder[tekst]); ?>
Avatar billede Slettet bruger
01. september 2005 - 17:32 #23
Det er den nu - den udskriver stadig <b>..
Avatar billede jaw Nybegynder
01. september 2005 - 17:33 #24
Og du er 120% sikker på, at denne: if($_SESSION['status'] == "Ejer") { er korrekt? For det kunne meget vel tyde på, at den ikke kommer ind i den del af if'en.

For at teste det, kan du indsætter en echo-linie:
if($_SESSION['status'] == "Ejer") {
  echo "test";
  //alt andet som det er nu
}

Og du har klaret punkt 1 fra kl. 17.28.26 ?
Avatar billede Slettet bruger
01. september 2005 - 17:35 #25
Ja det har jeg - fatter ikke lige din kode, hvad skal den til for.?
Avatar billede jaw Nybegynder
01. september 2005 - 17:36 #26
Hvilken del fatter du ikke?
Avatar billede Slettet bruger
01. september 2005 - 17:37 #27
if($_SESSION['status'] == "Ejer") {
  echo "test";
  //alt andet som det er nu
}

Hvad skal den til for.?
Avatar billede jaw Nybegynder
01. september 2005 - 17:40 #28
Den skal vise, om if-sætningen fungerer som den skal. Det jeg mener er, at du blot tilføjer echo-linien så det bliver:

if($_SESSION['status'] == "Ejer") {
  echo "test";
  $tekst = mysql_real_escape_string(htmlspecialchars($_POST['tekst']));
  $tekst = str_replace("&lt;", "<", $tekst);
  $tekst = str_replace("&gt;", ">", $tekst);
} else {
  $tekst = mysql_real_escape_string(htmlspecialchars($_POST['tekst']));
}
Avatar billede Slettet bruger
01. september 2005 - 17:43 #29
Den udskriver stadig <b>
Avatar billede jaw Nybegynder
01. september 2005 - 17:44 #30
Hvis den ikke skriver "test" på skærmen, så er det:
if($_SESSION['status'] == "Ejer") {
... der er noget galt med. Prøv at få den udskrevet et sted, og se om den nu også indeholder "Ejer".
Avatar billede Slettet bruger
01. september 2005 - 17:45 #31
Der er altså noget i din programering der ikke giver mening. - Jeg ved ikke hvad men det virker bare ikke..
Avatar billede jaw Nybegynder
01. september 2005 - 17:53 #32
Hvis du ikke vil have hjælp, så kan jeg heller ikke!

Men du kan se det her: http://www.tele2gaming.dk/slet.php og så prøv <b>noget tekst</b>

Måske jeg kan gå med til, at når man begynder at bruge " og ' kan det faile, men det kan løses. Men før det, så skal vi vist lige have det andet til at virke - hvis du altså vil!?
Avatar billede Slettet bruger
01. september 2005 - 17:56 #33
Jeg vil gerne have hjælp.
Avatar billede jaw Nybegynder
01. september 2005 - 17:58 #34
Godt, men så må du jo også fortælle mig det jeg spørger om, ellers har jeg jo ingen chance overhovedet :)

Så øverst i filen, EFTER session_start() indsætter du disse 2 linier:
echo "Sessionen indeholder: ".$_SESSION['status'];
exit;

... og så fortæller du mig, hvad der bliver udskrevet.
Avatar billede Slettet bruger
01. september 2005 - 18:04 #35
Blank side..
Avatar billede jaw Nybegynder
01. september 2005 - 18:05 #36
Fint, så er det jo som jeg siger. $_SESSION['status'] indeholder ingenting, og derfor vil du aldrig få mit script til at acceptere html-tags, for det er jo pointen i det hele...
Avatar billede Slettet bruger
01. september 2005 - 18:07 #37
Nå så kan det ikke virke..
Avatar billede jaw Nybegynder
01. september 2005 - 18:08 #38
Jo, det kan det sagtens, men hvor havde du tænkt dig, at status kom fra? Hvor derfinerer du hvem der har status som ejer? Det er jo klart, at status = ejer ikke kommer af sig selv...
Avatar billede Slettet bruger
01. september 2005 - 18:10 #39
Kan ikke forklare..
Avatar billede jaw Nybegynder
01. september 2005 - 18:22 #40
Aha...
Avatar billede Slettet bruger
03. september 2005 - 00:40 #41
Glem det totalt.. - Tak for hjælpen ellers.
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