Gå til innhold

str_replace() i form. [LØST]


Anbefalte innlegg

Skrevet (endret)

Går det an å gjøre slik at f.eks ' automatisk blir til ´ (altså blir til WYSIWYG-formen av seg selv), mens jeg skriver i et form? Har nemmelig problem med at når jeg skriver f.eks ' i en tekst i gjestebok-scriptet mitt (eller news-scriptet for den del), så får jeg en error når innlegget skal lagres i mySQL databasen.

Endret av Tha_Zaynt
Videoannonse
Annonse
Skrevet

når jeg setter det inn slik får jeg bare feillmeldingen;

Et eller flere felt mangler nødvendig informasjon. Selv om jeg har fylt ut alle..

 

reg.php

<link rel="stylesheet" type="text/css" href="style.css">
<?php
include("config.php");

// Get data from form

if($formMethod == "post") {
$tittel = $_POST['tittel'];
$navn = $_POST['navn'];
$nyhet = $_POST['nyhet'];
$dato = date ("d/m/Y, H:i:s"); }	

else {
$tittel = $_GET['tittel'];
$navn = $_GET['navn']; 
$nyhet = $_GET['nyhet']; 
$dato = date ("d/m/Y, H:i:s"); }

$tittel = htmlspecialchars($tittel);
$tittel = str_replace("æ","æ",$tittel);
$tittel = str_replace("ø","ø",$tittel);
$tittel = str_replace("å","å",$tittel);
$tittel = str_replace("Æ","Æ",$tittel);
$tittel = str_replace("Ø","Ø",$tittel);
$tittel = str_replace("Å","Å",$tittel);
$tittel = str_replace("","<br>",$tittel);
$tittel = str_replace("\n","<br>",$tittel);
$navn = htmlspecialchars($navn);
$navn = str_replace("æ","æ",$navn);
$navn = str_replace("ø","ø",$navn);
$navn = str_replace("å","å",$navn);
$navn = str_replace("Æ","Æ",$navn);
$navn = str_replace("Ø","Ø",$navn);
$navn = str_replace("Å","Å",$navn);   
$nyhet = htmlspecialchars($comment);
$nyhet = str_replace("æ","æ",$nyhet);
$nyhet = str_replace("ø","ø",$nyhet);
$nyhet = str_replace("å","å",$nyhet);
$nyhet = str_replace("Æ","Æ",$nyhet);
$nyhet = str_replace("Ø","Ø",$nyhet);
$nyhet = str_replace("Å","Å",$nyhet);
$nyhet = str_replace("","<br>",$nyhet);
$nyhet = str_replace("\n","<br>",$nyhet);

// Remove HTML-tags and unnecessary spaces
$tittel = rtrim(ltrim(strip_tags($tittel)));
$navn = rtrim(ltrim(strip_tags($navn)));
$nyhet = rtrim(ltrim(strip_tags($nyhet)));



// Check that none of the fields are empty
if (empty($tittel) || (empty($navn) ||empty($nyhet))) {
echo "Et eller flere felt mangler nødvendig informasjon.<p><a href='news.php'>Tilbake</a></p>"; }


else {
// Connect to MySQL
mysql_connect($mySQLhost, $mySQLuser, $mySQLpass)
       or die("Could not connect: " . mysql_error());
mysql_select_db($mySQLdb);

// Insert the data into the database
if (mysql_query("INSERT INTO $mySQLtable (tittel,navn,nyhet,dato) VALUES ('$tittel','$navn','$nyhet','$dato')")) {
echo $regSuccess; }
else { 
echo $regFailed. mysql_error(); }

mysql_close(); }

?>

Skrevet (endret)

Hvis du skal lagre informasjonen i en database kan det nok være lurt å kjøre addslashes() på variablene som skal legges inn. Da escapes ' slik at databasen ikke returnerer syntaksfeil om en variabel inneholder '.

 

 

Edit: prøv denne isteden:

if (empty($tittel) || empty($navn) || empty($nyhet)) {

Endret av lokaltog
Skrevet (endret)

empty sjekkern fungerer fint den, men når jeg setter inn koden nedenfor eller før empty sjekkern, så sier den at ingen felter er fylt ut.

hvordan bruker man addslashes() i praksis?

 

$tittel = htmlspecialchars($tittel);
$tittel = str_replace("æ","æ",$tittel);
$tittel = str_replace("ø","ø",$tittel);
$tittel = str_replace("å","å",$tittel);
$tittel = str_replace("Æ","Æ",$tittel);
$tittel = str_replace("Ø","Ø",$tittel);
$tittel = str_replace("Å","Å",$tittel);
$tittel = str_replace("","<br>",$tittel);
$tittel = str_replace("\n","<br>",$tittel);
$navn = htmlspecialchars($navn);
$navn = str_replace("æ","æ",$navn);
$navn = str_replace("ø","ø",$navn);
$navn = str_replace("å","å",$navn);
$navn = str_replace("Æ","Æ",$navn);
$navn = str_replace("Ø","Ø",$navn);
$navn = str_replace("Å","Å",$navn);   
$nyhet = htmlspecialchars($comment);
$nyhet = str_replace("æ","æ",$nyhet);
$nyhet = str_replace("ø","ø",$nyhet);
$nyhet = str_replace("å","å",$nyhet);
$nyhet = str_replace("Æ","Æ",$nyhet);
$nyhet = str_replace("Ø","Ø",$nyhet);
$nyhet = str_replace("Å","Å",$nyhet);
$nyhet = str_replace("","<br>",$nyhet);
$nyhet = str_replace("\n","<br>",$nyhet);

 

EDIT: Fant buggen som gjorde at et eller flere felt mangler, og nå funker alt som det skal

Endret av Tha_Zaynt
Skrevet
hvordan bruker man addslashes() i praksis?

addslashes("Tekststreng med 'apostrof'!");

 

Blir til:

 

Tekststreng med \'apostrof\'!

 

Slik at variabler med apostrof blir tolket riktig av MySQL.

Skrevet

btw; kan du svare meg på hva som er galt i denne formen under? får bare feilen;

 

Parse error: parse error, unexpected T_STRING, expecting ',' or ';' in c:\appserv\www\news\rediger.php on line 75

 

echo '
<form method="post" action="?action=save_changes&id=' . $id . '">
<p>Overskrift: <input type="text" name="tittel" maxlength="37" size="37" value="' . $row->tittel . '" /></p>
<p>Forfatter:  <input type="text" name="navn" maxlength="37" size="37" value="' . $row->navn . '" /></p>
<p>Nyhet:<br /><textarea name="nyhet" cols="46" rows="10">' . $row->nyhet . '</textarea></p>
--->linje 75 <a href="javascript:addsmile(' X( ')"><img src="$SmileyDir/angry.gif" alt="" border="0"></a>
 <a href="javascript:addsmile(' :f ')"><img src="$SmileyDir/flirt.gif" alt="" border="0"></a>
 <a href="javascript:addsmile(' :x ')"><img src="$SmileyDir/dead.gif" alt="" border="0"></a>
 <a href="javascript:addsmile(' :( ')"><img src="$SmileyDir/frown.gif" alt="" border="0"></a>
 <a href="javascript:addsmile(' :h ')"><img src="$SmileyDir/cool.gif" alt="" border="0"></a>
 <a href="javascript:addsmile(' :i ')"><img src="$SmileyDir/idea.gif" alt="" border="0"></a>
 <a href="javascript:addsmile(' :) ')"><img src="$SmileyDir/smile.gif" alt="" border="0"></a>
 <a href="javascript:addsmile(';) ')"><img src="$SmileyDir/wink.gif" alt="" border="0"></a>
 <a href="javascript:addsmile(' :l ')"><img src="$SmileyDir/hrmpf.gif" alt="" border="0"></a>
 <a href="javascript:addsmile(' :o ')"><img src="$SmileyDir/redface.gif" alt="" border="0"></a>
 <a href="javascript:addsmile(' :00 ')"><img src="$SmileyDir/look.gif" alt="" border="0"></a>
 <a href="javascript:addsmile(' :p ')"><img src="$SmileyDir/tounge.gif" alt="" border="0"></a>
 <a href="javascript:addsmile(' :q ')"><img src="$SmileyDir/quest.gif" alt="" border="0"></a>
 <a href="javascript:addsmile(' :r ')"><img src="$SmileyDir/shame.gif" alt="" border="0"></a>
 <a href="javascript:addsmile(' :D ')"><img src="$SmileyDir/biggrin.gif" alt="" border="0"></a>
 <a href="javascript:addsmile(' :e ')"><img src="$SmileyDir/supergrin.gif" alt="" border="0"></a>
<input type="submit" name="Lagre" value="'.$LagreVal.'" /> <input type="reset" value="Slett" />
</form>';

Skrevet (endret)

Du trenger ikke å bytte ut "Ø" med ø osv. når du har riktig tegnsett. Bare du spesifiserer tegnsettet iso-8859-1 i meta-taggene eller i HTTP-headerne går det fint.

 

 

EDIT:

 

echo '
<form method="post" action="?action=save_changes&id=' . $id . '">
<p>Overskrift: <input type="text" name="tittel" maxlength="37" size="37" value="' . $row->tittel . '" /></p>
<p>Forfatter:  <input type="text" name="navn" maxlength="37" size="37" value="' . $row->navn . '" /></p>
<p>Nyhet:<br /><textarea name="nyhet" cols="46" rows="10">' . $row->nyhet . '</textarea></p>
--->linje 75 <a href="javascript:addsmile(\' X( \')"><img src="' . $SmileyDir . '/angry.gif" alt="" border="0"></a>
<a href="javascript:addsmile(\' :f \')"><img src="' . $SmileyDir . '/flirt.gif" alt="" border="0"></a>
<a href="javascript:addsmile(\' :x \')"><img src="' . $SmileyDir . '/dead.gif" alt="" border="0"></a>
<a href="javascript:addsmile(\' :( \')"><img src="' . $SmileyDir . '/frown.gif" alt="" border="0"></a>
<a href="javascript:addsmile(\' :h \')"><img src="' . $SmileyDir . '/cool.gif" alt="" border="0"></a>
<a href="javascript:addsmile(\' :i \')"><img src="' . $SmileyDir . '/idea.gif" alt="" border="0"></a>
<a href="javascript:addsmile(\' :) \')"><img src="' . $SmileyDir . '/smile.gif" alt="" border="0"></a>
<a href="javascript:addsmile(\';) \')"><img src="' . $SmileyDir . '/wink.gif" alt="" border="0"></a>
<a href="javascript:addsmile(\' :l \')"><img src="' . $SmileyDir . '/hrmpf.gif" alt="" border="0"></a>
<a href="javascript:addsmile(\' :o \')"><img src="' . $SmileyDir . '/redface.gif" alt="" border="0"></a>
<a href="javascript:addsmile(\' :00 \')"><img src="' . $SmileyDir . '/look.gif" alt="" border="0"></a>
<a href="javascript:addsmile(\' :p \')"><img src="' . $SmileyDir . '/tounge.gif" alt="" border="0"></a>
<a href="javascript:addsmile(\' :q \')"><img src="' . $SmileyDir . '/quest.gif" alt="" border="0"></a>
<a href="javascript:addsmile(\' :r \')"><img src="' . $SmileyDir . '/shame.gif" alt="" border="0"></a>
<a href="javascript:addsmile(\' :D \')"><img src="' . $SmileyDir . '/biggrin.gif" alt="" border="0"></a>
<a href="javascript:addsmile(\' :e \')"><img src="' . $SmileyDir . '/supergrin.gif" alt="" border="0"></a>
<input type="submit" name="Lagre" value="'.$LagreVal.'" /> <input type="reset" value="Slett" />
</form>';

 

Her er koden med escaping av JS-koden, samt at $smileydir vil bli satt inn på rett sted. :)

Endret av jorgis
Skrevet

Alle forekomster av apostrof ( ' ) skal settes en skråstrek foran ( \ ). Jeg skrev om koden din i posten min over, slik at alt ble skikkelig escapet.

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...