webForumDet fria alternativet

Allt med PHP på min sida har ett konstigt fel, hjälp mig :(

PHP

15 svar · 848 visningar · startad av Robbster

Medlem sedan aug. 200290 inlägg
Frågan#1

Det är så att jag använder mig av ett "kontakta mig" formulär och en gästbok i PHP på min hemsida; http://www.schubb.net

Dom funkar som script väldigt bra, men på senaste tiden har det dykt upp ett problem med dessa script helt automatiskt. Och det är att så snabbt man skriver något med det här tecknet " att göra så skriver den automatiskt en "slash" före det tecknet, så det blir så här \"

T.ex. om jag skriver ett inlägg i gästboken som ser ut så här när jag skriver det:
Hej, lyssnade på eran musik. Inte riktigt min "smak", hejdå.
så visas det där som:
Hej, lyssnade på eran musik. Inte riktigt min \"smak\", hejdå.

Notera då vid ordet smak att den själv lagt dit två "slash".

Du kan ju själva titta lite i gästboken och se folk som använt sig av dessa citattecken, och att det då senare vid postning lagt till dom där slasharna.

Varför blir det så?
Och du kan även testa kontakta oss formuläret och skriva något med " det tecknet, så skickar jag det tillbaka till dig så får du se att den gör exakt som gästboken gör.

Snälla, vad ska jag göra för att få det att inte göra så? Det kan ju inte va något fel på scripten? Dom har ju funkat felfritt hela tiden förs inte så längesen.

Tacksam för svar!

Medlem sedan dec. 19996 592 inlägg
#2

Re: Allt med PHP på min sida har ett konstigt fel, hjälp mig :(

Robbster skrev:

Varför blir det så?

Någon har aktiverat magic_quotes i php.ini.

Robbster skrev:

Snälla, vad ska jag göra för att få det att inte göra så?

http://se.php.net/manual/en/function.stripslashes.php

Medlem sedan aug. 200290 inlägg
#3

Tack, men så bra är jag inte PHP så jag förstår vad jag ska göra för att åtgärda problemet :D

Hur skulle jag göra? ;)

Medlem sedan dec. 19996 592 inlägg
#4

I ditt gästboksskript står det saker som

echo $name;
echo $email;
echo $message;

och liknande. Byt ut dessa mot:

echo stripslashes($name);
echo stripslashes($email);
echo stripslashes($message);

Funktionen stripslashes letar igenom $variabel_namn och "strippar" bort de "\"-tecken som hittas.

Medlem sedan aug. 200290 inlägg
#5

Jag måste va sämst på PHP. Jag har sökt igenom varenda PHP fil efter "echo" men hittar inte det.
Notera att det är ett gratisscript jag laddat hem och jag har inte gjort det, alls. Så jag är usel på PHP.

Hjälp! :/

Medlem sedan juni 20006 031 inlägg
#6

Posta koden till sidan som skriver ut inläggen så ska vi nog kunna hjälpa dig.

Medlem sedan aug. 200290 inlägg
#7

Låt mig gissa att det är skriv.php? :)

<?php

#											#
#	This file is the property of RiKLuND.	#
#											#
#	License:	GNU/GPL						#
#	Date:		2003-05-21					#
#	Version:	1.0							#
#											#

define( "inne" , true );

//	Fixa de vanliga sakerna.
@include( "header.php" );

//	Skickat formulär?
if( isset( $_POST[ "send" ] ) )
{
	//	Kopiera datan.
	$kopia = extract( $_POST );
	
	if( !$kopia )
	{
		die( "Error, please try again later" );
	}
	
	//	Ok, nu finns datan tillgänglig.
	//	Kolla emailadressen.
	if( !preg_match( '#^[-_a-z0-9]+(\.[-_a-z0-9]+)*@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]{2,6}$#is' , $email ) )
	{
		die( "Invalid email, please go back and correct your email" );
	}
	
	//	Kolla namnet.
	if( strlen( $poster ) < 1 )
	{
		die( "Your name?" );
	}
	
	//	Kolla meddelandet.
	if( strlen( $message ) < 1 )
	{
		die( "Your comment?" );
	}
	
	//	Nu är det dags att modifiera inlägget lite.
	$message = str_replace( "\r\n" ,  "[nl]" , $message );
	
	//	Skapa all data.
	$data = array();
	$data[ "namn" ] = $poster;
	$data[ "tid" ] = time();
	$data[ "icq" ] = $icq;
	$data[ "hemsida" ] = $homepage;
	$data[ "klick" ] = 0;
	$data[ "email" ] = $email;
	$data[ "mess" ] = $message;
	$data[ "smile" ] = ( isset( $no_smile ) && ( $no_smile == 1 ) ? 0 : 1 );
	
	//	Lägg ihop till en sträng.
	$inlagg = serialize( $data ) . "\n";
	
	//	Nu är det dags att spara inlägget.
	$spara = gb_save( $filen , $inlagg );
	
	// Ska vi skicka ett email till ägaren?
	if( ( $spara == true ) && ( $skicka_mail == 1 ) )
	{
		// Skapa meddelandet
		$m = "Hejsan!\n";
		$m .= "Du får det här meddelandet för att någon har skrivit ett nytt inlägg i din gästbok.\n\n";
		$m .= "// RiC]-[iE, gästbokens skapare.";
		// Skapa headers
		$h = "Content-Type: text/plain\r\n";
		$h .= "From: RiC]-[iE\r\n";
		$h .= "Reply-To: [email]no-reply@domain.com[/email]\r\n";
		// Skapa ämnet
		$s = "Nytt gästboksinlägg";
		
		// Skicka mailet
		@mail( $admin_email , $s , $m , $h );
	}
	
	// Hämta den senaste sidan:
	if( $sortering == 1 )
	{
		$sidan = "";
	}
	else
	{
		$sidan = ( ( gb_page( $filen , $per_sida ) > 0 ) ? gb_page( $filen , $per_sida ) : "" );
	}
	//	Skicka till gästboken.
	header( "Location: ./index.php" . ( ( empty( $sidan ) ) ? "" : "?s=" . $sidan ) );
	exit;
}
else
{
	//	Starta den här filen.
	$kod = implode( "" , file( "design/skriv.tpl" ) );
	
	//	Smiliesarna.
	for( $i = 0 ; $i < 16 ; $i++ )
	{
		$data[ "BILD" ] = $smile[$i][ "image" ];
		$data[ "KOD" ] = addslashes( $smile[$i][ "code" ] );
		
		$kod = save( "smilie" , $data , $kod );
	}
	
	//	Skapa smilie-blocket.
	$kod = action( "smilie" , $kod );
	
	//	De vanliga värdena.
	$kod = replace( "TITEL" , "$titel" , $kod );
	
	//	Skriv ut sidan.
	print( $kod );
}

?>
Medlem sedan aug. 200290 inlägg
#8

Någon? Snälla? :D

Medlem sedan juni 2003372 inlägg
#9

Ser ut som det är en annan fil du ska kolla i, den sidan som du skickas till här

	if( $sortering == 1 )
	{
		$sidan = "";
	}
	else
	{
		$sidan = ( ( gb_page( $filen , $per_sida ) > 0 ) ? gb_page( $filen , $per_sida ) : "" );
	}
	//	Skicka till gästboken.
	header( "Location: ./index.php" . ( ( empty( $sidan ) ) ? "" : "?s=" . $sidan ) );

är den som skriver ut dina meddelanden.

Kolla om det finns några

[b]print[/b] $minvariabel

i den filen som skriver ut inläggen och lägg till stripslashes där i den filen isåfall.

Medlem sedan aug. 200290 inlägg
#10

Oj oj, nu är jag högt förvirrad men jag ger dig index.php som jag antar är filen som behövs fixas?

<?php

#											#
#	This file is the property of RiKLuND.	#
#											#
#	License:	GNU/GPL						#
#	Date:		2003-05-21					#
#	Version:	1.0							#
#											#

define( "inne" , true );

//	Fixa de vanliga sakerna.
@include( "header.php" );

//	Starta den här filen.
$kod = implode( "" , file( "design/index.tpl" ) );

//	Ladda inläggen om filen finns.
$antal_inlagg = ( !file_exists( $filen ) ) ? 0 : sizeof( @file( $filen ) ) ;
$inlagg = ( $antal_inlagg > 0 ) ? @file( $filen ) : "inga_inlagg" ;

//	Några inlägg?
if( $inlagg == "inga_inlagg" )
{
	//	Det finns inga inlägg i gästboken.
	$kod = control( "inga_inlagg" , $kod );
	$kod = control( "inlagg" , $kod , true );
	$kod = control( "sida" , $kod , true );
	$kod = replace( "TEXT_INGA" , "Det finns inga inlägg i gästboken." , $kod );
}
else
{
	//	Ta bort "Inga inlägg"-blocket.
	$kod = control( "inga_inlagg" , $kod , true );
	
	// Hämta antalet sidor
	$sidor = ( ( gb_page( $filen , $per_sida ) > 0 ) ? gb_page( $filen , $per_sida ) : 1 );
	// Spara antalet sidor:
	for( $i = 0 ; $i < $sidor ; $i++ )
	{
		$data = array();
		$data[ "SIDA" ] = ( ( empty( $_GET[ "s" ] ) || ( $_GET[ "s" ] < 2 ) ) ? ( ( $i == 0 ) ? "<b>1</b>" : ( $i + 1 ) ) : ( ( ( $i + 1 ) == $_GET[ "s" ] ) ? "<b>" . ( $i + 1 ) . "</b>" : ( $i + 1 ) ) );
		$data[ "LANK" ] = ( ( $i == 0 ) ? "" : ( "?s=" . ( $i + 1 ) ) );
		$kod = save( "sida" , $data , $kod );
	}
	$kod = action( "sida" , $kod );
	//	Hämta inläggen.
	$all = gb_fetch( $sortering , $filen , $per_sida );
	//	Kompilera dem en efter en...
	for( $i = 0 ; $i < sizeof( $all ) ; $i++ )
	{
		//	Separera datan.
		$sep = unserialize( $all[$i] );
		
		//	Spara datan.
		$data = array();
		$data[ "NAMN" ] = $sep[ "namn" ];
		$data[ "DATUM" ] = date( 'm-d-y H:i' , $sep[ "tid" ] );
		$data[ "ICQ" ] = ( empty( $sep[ "icq" ] ) ) ? "" : "<a href=\"http://www.icq.com/" . $sep[ "icq" ] . "\" target=\"_blank\">Kontakta på ICQ</a>";
		$data[ "HEMSIDA" ] = ( ( empty( $sep[ "hemsida" ] ) ) ? "" : "" );
		$data[ "KLICK" ] = ( ( empty( $sep[ "hemsida" ] ) ) ? "" : "( " . $sep[ "klick" ] . " )" );
		$data[ "EMAIL" ] = $sep[ "email" ];
		$data[ "INLAGG" ] = compile( $sep[ "mess" ] , $sep[ "smile" ] );
		
		//	Spara!
		$kod = save( "inlagg" , $data , $kod );
	}
	
	//	Fixa blocket.
	$kod = action( "inlagg" , $kod );
}

//	De vanliga värdena.
$kod = replace( "TITEL" , "$titel" , $kod );
$kod = replace( "ANTAL_INLAGG" , $antal_inlagg , $kod );

//	Skriv ut sidan.
print( $kod );

?>
Medlem sedan juni 2003372 inlägg
#11

Ändra sista raden där från:
print( $kod );
till:
echo stripslashes($kod);

Medlem sedan aug. 200290 inlägg
#12

Underbart, det funkade. Tack!

Men nu återstår problemet på min kontakt sida också. Där finns det bara en kod och den ser ut så här:

<? 
if (!$namn) { 
header ("Location: contact.php"); 
die(); 
} 
if (!$email) { 
header ("Location: contact.php"); 
die(); 
} 
if (!$text) { 
header ("Location: contact.php"); 
die(); 
} 
#KOMMENTARER! 
#Här ändrar du vilken mail mailet skall komma till, ändra också Subjectet,vart mailet kommer #ifrån skall du också ändra 

mail("schubb@schubb.net", $_POST["subject"], "$namn\n$email\n$text", "From: $email\r\n"); 
?>

Hur ska jag fixa stripsplashes här?

Medlem sedan juni 2003372 inlägg
#13
mail("schubb@schubb.net", stripslashes($_POST["subject"]), stripslashes($namn)."\n".stripslashes($email)."\n".stripslashes($text), "From: ".stripslashes($email)."\r\n");

Man kan flytta ut alla stripslashes och göra det före också så koden blir lite snyggare, men det där ska funka.

Medlem sedan aug. 200290 inlägg
#14

Tusen tack! Funkade utmärkt det med!

Medlem sedan juni 2003372 inlägg
#15

Robbster skrev:

Tusen tack! Funkade utmärkt det med!

Så lite så :)

Vill du lära dig om php och hur det fungerar så är ett tips att kika på http://www.php.net/ och framförallt http://www.php.net/docs.php och kolla dokumentationen som finns där. Där står det mesta man behöver veta.

Medlem sedan juni 20038 inlägg
#16

wikin på phpportalen.net är också ett bra tips..

265 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)