Gå til innhold

Løst - Fjerne HTML tags da man skriver post..


Anbefalte innlegg

Hei.

 

 

Jeg har laget en liten gjestebok, men er jo selvsagt noen idioter som gjør hærverk med diverse html koder osv, er det en enkel måte og fjerne html tags på? Jeg er ikke efarende i php enda :)

 

Gjesteboka består av php\mysql database.

 

 

Takk takk :)

Endret av vbPro
Lenke til kommentar
Videoannonse
Annonse
Og vær så snill og si at du sjekker data før de settes inn i databasen? :)

 

<?php
/*
* @author Ketil Stadskleiv <[email protected]>
* @param mixed $value
* @return mixed
*/
function quote_smart($value){
	// Stripslashes
	if (get_magic_quotes_gpc()) {
			$value = stripslashes($value);
	}

	//Change decimal values from , to . if applicable
	if( is_numeric($value) && strpos($value,',') !== false ){
			$value = str_replace(',','.',$value);
	}
	if( is_null($value) ){
			$value = 'NULL';
	}
	// Quote if not integer or null
	elseif (!is_numeric($value)) {
			$value = "'" . mysql_real_escape_string($value) . "'";
	}

	return $value;
} 
?>

Lenke til kommentar

Hmm. Kunne noen gi meg ett eksempel på å stripe tag'ene? Skal de stripes før de legges inn i databasen, eller når de blir lest fra databasen?

 

Kikket på php.net siden og testet med dette eksemplet:

 

<?php
$name=$_POST["name"];
$age=$_POST["age"];
?>
Welcome <?php echo strip_tags($name, '<p><a>'); ?>.<br />
You are <?php echo strip_tags($age, '<p><a>'); ?> years old!

 

Det funket, men jeg er usikker på hvordan jeg skal gjøre dette med MySQL siden da jeg skriver til databasen bruker jeg:

 

$sql="INSERT INTO $tbl_name(name, age)VALUES('$name', '$age')";

 

Teste følgende, men funket ikke så bra.

 

$sql="INSERT INTO $tbl_name(name, age)VALUES(strip_tags($name), strip_tags($age))";

Endret av vbPro
Lenke til kommentar

Nå har jeg fått det til.

 

Bare fjernet html tagsa da den leste fra databasen :)

 

ang SQL Injection osv.. kan dem gjøre noe fanteri med gjesteboken min?

 

Gjerne send meg en PM om du vil "teste" sikkerheten til siden så kan ejg gi deg url (den er ikke åpent for "alle" enda :p )

Lenke til kommentar
Og så lenge du ikke har behov for innleggene med HTML-kode noen gang ever så vil jeg anbefale at du fjerner det ved insert istedet for ved uthenting... :)

 

Jepp, men kunne trengt den uansett siden jeg har lagt til smileys osv som ":p" blir en html kode til smiley bildet. + Jeg kan se i "loggen" om det er noen som har prøvd seg :-P så lenge det ikke er skadelig så ser jeg ingen grunn for at det skal fjernest helt ;)

Lenke til kommentar

Da parser du smilies, og annen bbkode, _etter_ at du har har kjørt strip-tags.

<?php

$text = strip_tags( $_POST['text'] );
$text = mysql_real_escape_string( $text ); // Eller en annen escape-funksjon

$text = str_replace( ':p', '<img src="smilie.gif" alt=":P" />', strtolower($text) );
/* etc... */

/* INSERT INTO blablablablabla */

?>>

Lenke til kommentar

alternativ til striptags er:

 

function sanitize_html($string) {

$string = str_replace('<', '<', $string);

$string = str_replace('>', '>', $string);

return $string;

}

 

da vil eventuelle tags vises som ren tekst og blir ikke parset av browseren.

Endret av grimjoey
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...