PHP Centeri avaleht Skriptikogu Küsimuste-vastuste leht Teadete vaatamine ja saatmine Foorum - koht küsimiseks Otsingumootor Siit saad infot meie kohta

Kasutajanimi:  
  Parool: 
  Registreeri!   Unustasid salasõna?

Foorumid Programmeerimine PHP & MySQL Ei saa jutumärke <textarea>-sse panna
Autor Abi Postitus Abi

incucu

Postitusi: 4
Tase: 1
Olek: Offline

Hinnang: Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10
küsimus Ei saa jutumärke <textarea>-sse panna

Olen vägagi algaja PHP-s ja tekkis selline tobe probleem:

Andmebaasist (mysql) saadud kirje kuvamisel formi, näiteks
<textarea name="minginimi" cols="10" rows="10"><?php echo "$mingitekst"; ?></textarea>
et seal saaks andmeid muuta ja tagasi saata andmebaasi,
kaovad ära kõik sümbolid, mis on peale jutumärke.

Ehk siis näiteks kui $mingitekst oli enne - ma "tean" palju PHP-st,
siis sinna textarea-sse jääb järgi vaid - ma
(Probleem on just tulemuse formi väljastamisel, niisama lehele kuvamisel tuleb kõik ilusasti kohale)

Lugesin ja uurisin ja puurisin, ei saanud abi ka käskudest addslashes() ja stripslashes(),
kuna siis saan parimal juhul tulemuseks - ma või midagi sellist.

Siis kuskilt lugesin, et kui php.ini -s on "magic_quotes_gpc()" lubatud või midagi sellist, siis see teeb ise selle töö ära ja käsud add... ja stripslashes teevad asja vaid hullemaks.
Tulemus "echo get_magic_quotes_gpc();" andis mulle "1". Samas mul ju õigesti tulemusi ei väljastatud.


Nüüd ei teagi mida teha või proovida.
Arvatavasti on tegu mingi tüüpilise probleemiga, aga abi ikkagi kuskilt ei leidnud.

Ette tänades, incucu

29.09.2005 15:02:13 Vajutades siia näed kasutaja incucu profiili

jutumees
$jutumees = $me;


Postitusi: 68
Tase: 4
Olek: Offline

Hinnang: Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10
RE: Ei saa jutumärke <textarea>-sse panna

kuidas sul kood välja näeb ka??
aga proovi
sisestamisel baasi kasuta mysql_real_escape_string(); (INSERT INTO TABEL .......asi=mysql_real_escape_string($v22rtus))

ja baasist välja echo htmlspecialchars($baasit_tulemus);

vaata mis saab

___________________________________________________
Kas paneb mõtlema???

29.09.2005 15:32:07 Vajutades siia näed kasutaja jutumees profiili

rmsmarko

Postitusi: 46
Tase: 3
Olek: Offline

Hinnang: Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10
RE: Ei saa jutumärke <textarea>-sse panna

proovi <?php echo "$mingitekst"; ?> asemel panna <?php echo '$mingitekst'; ?>

___________________________________________________
kes ei küsi see targaks ei saa

29.09.2005 16:00:44 Vajutades siia näed kasutaja rmsmarko profiili

miko


Postitusi: 53
Tase: 4
Olek: Offline

Hinnang: Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10
RE: Ei saa jutumärke <textarea>-sse panna

Tsiteeritud tekst:
proovi <?php echo "$mingitekst"; ?> asemel panna <?php echo '$mingitekst'; ?>




PHP kood:


<?php echo htmlentities($mingitekst,ENT_QUOTES); ?>



29.09.2005 16:23:49 Vajutades siia näed kasutaja miko profiili

muidumeez
Ignorantia non est
argumentum


Postitusi: 3864
Tase: Administraator
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: Ei saa jutumärke <textarea>-sse panna

Tsiteeritud tekst:
proovi <?php echo "$mingitekst"; ?> asemel panna <?php echo '$mingitekst'; ?>

Midagi idiootsemat soovitada on raske. Kõige õigem on panna <?php echo $mingitekst;?>

___________________________________________________
An Opinion Is Like An Asshole -- Everybody Has One

29.09.2005 16:44:53 Vajutades siia näed kasutaja muidumeez profiili

jutumees
$jutumees = $me;


Postitusi: 68
Tase: 4
Olek: Offline

Hinnang: Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10
RE: Ei saa jutumärke <textarea>-sse panna

tegelikult pole tähtis mis sisestad sinna, olgu selleks " ' või ´.



incucu kas proovisid htmlentities(); htmlspecialchars(); kasutada kuvamisel???

ja näita kuidas sa sisestad ja kuvad andmeid praegu

___________________________________________________
Kas paneb mõtlema???

29.09.2005 17:13:49 Vajutades siia näed kasutaja jutumees profiili

incucu

Postitusi: 4
Tase: 1
Olek: Offline

Hinnang: Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10
RE: Ei saa jutumärke <textarea>-sse panna

Ka need htmlentities() ja htmlspecialchars() ei aidanud vähemalt esialgu.

Kogu mu "süsteemi" põhimõte seisneb selles, et otsustasin andmebaasist tulevatele vastustele sellise lisa teha,
et teatud inimesed, nagu näiteks "admin" saaksid iga konkreetset vastust muuta.
Seepärast tegin baasist tulevale lõppu veel ühe if-lause, et ainult näiteks "admin" seda näeks:

Kuskil kõigepealt on päring:
$sql =  "select kuupaev, kommentaar from treening WHERE kommentaar LIKE '$otsi'";
$result = mysql_query($sql);

ja $otsi="%".$otsitav."%";

Ja siis tuleb see, mile lõppu panen lisa tingimuslause:

<?php
while ( $data = mysql_fetch_array($result) ) {
...
echo '<tr>
<table width="500" border="2" bgcolor="#B0C4DE" bordercolor="#007FFF" align="center" cellpadding="0" >
<td width="75" align="center">' . $data[0] . '</td>
<td width ="425">' . $result_text . '</td>
</tr><hr><br>' . "\n";
// $result_text on peaaegu sama mis $data[1], ainult otsingusõsteemist tulnud sõna on teist värvi et hästi silma jääks

if ($login_f_nimi == "admin"){
    echo '<td align="center">';
    ?>
       <form method="POST"  action="<?php echo $_SERVER['PHP_SELF']; ?>">
      <input type="hidden" name="kuupaev_muuda" value="<?php echo "$data[0]"; ?>"/>
       <input type="hidden" name="kommentaar_muuda" value="<?php echo "$data[1]"; ?>"/>
       <input type="hidden" name="otsitav" value="<?php echo "$otsitav"; ?>">
       <!--seda eelmist $otsitav hetkel otsiti, tahan hiljem võibolla tagasi selle juurde pöörduda-->
       <input name="muuda_kommentaari" type="submit" value="Muuda">
       </form>
       <?php
   echo '</td>';
     }
  echo '</table>';
}



Nii, kuna olen selle postitanud samale lehele kus see asi ise asub (action="<?php echo $_SERVER['PHP_SELF']; ?>") siis tegin ka if-lause mis selle kinni püüab, et saaks konkreetset kommentaari muuta:



if (array_key_exists('muuda_kommentaari', $_POST)){
   ?>
   <table width="500" border="0" align="center">
   <form method="POST"  action="<?php echo $_SERVER['PHP_SELF']; ?>">
   <td width="75">
   <input name="kuupaev_muudetud" type="text" value="<?php echo "$kuupaev_muuda"; ?>" size="6">
   <!-- paneb textboxi ilusti õige kuupäeva, seda mille kommentaari muuta tahangi-->
   </td>
   <td width="75">
   <input name="otsitav" type="hidden" value="<?php echo "$otsitav"; ?>" size="6">
   <!-- seda otsitavat kannan ikka niisama kaasas veel-->
   </td>
   <textarea name="kommentaar_muudetud" cols="60" rows="10"><?php echo "$kommentaar_muuda"; ?></textarea>
   <!-- selle juures kaovadki jutumärgid ära -->
   <input name="muudan_kommentaari" type="submit" value="Teen muudatused">
   <input name="katkestan_muudatuse" type="submit" value="Tagasi otsisõna <?php echo "$otsitav"; ?> juurde">
   </form>
   </table>
   <?php

}

Ja probleem tekibki selle viimase lõigu sees , seal kus olen seda ka kommenteerinud...

29.09.2005 18:40:10 Vajutades siia näed kasutaja incucu profiili

fax
Upsakas kontoritarve

Postitusi: 1195
Tase: 9
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: Ei saa jutumärke <textarea>-sse panna

Tegelt soovitan sul faili alguses need magic_quoted offi keerata set_magic_quote_runtime(0); abil. Ja edasi proovi mysq_realescape_string() jne funktsioone mis eelpool soovitatud.

P.S. Kas keegi seletaks mulle ära, kust tuleb see fenomeen, just noorprogejate osas, et kiputakse kasutama lahendust kujul echo "$jama"; ?

___________________________________________________
Kui olete saanud täna hommikul hakkama 6 võimatu asjaga, miks siis mitte lisada sellele veel programmeerimine ?

29.09.2005 19:53:34 Vajutades siia näed kasutaja fax profiili

jutumees
$jutumees = $me;


Postitusi: 68
Tase: 4
Olek: Offline

Hinnang: Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10
RE: Ei saa jutumärke <textarea>-sse panna

proovi mis saab:

PHP kood:

<?php
//yhenda andmebaasiga


$sql =  'select kuupaev, kommentaar from treening'
$result mysql_query($sql);

while ( 
$data mysql_fetch_array($result) ) { 
?>
<form method="POST"  action="<?php echo $_SERVER['PHP_SELF']; ?>">
<textarea name="kommentaar_muudetud" cols="60" rows="10"><?php echo htmlspecialchars($data['kommentaar']); ?></textarea>
</form>
<?php
}
?>



Seda postitust on muudetud 1 kord (2005-09-30 11:49:11 jutumees poolt)

___________________________________________________
Kas paneb mõtlema???

29.09.2005 20:08:46 Vajutades siia näed kasutaja jutumees profiili

incucu

Postitusi: 4
Tase: 1
Olek: Offline

Hinnang: Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10
Ei saa jutumärke <textarea>-sse panna

Sain lõpuks need jutumärgid sinna htmlspecialchars() abiga...
just kui kasutasin neid jutumehe soovitatud kujul.

Mu eelmises postituses esitatud koodil vahetasin  rea

Koodijupp:
<input type="hidden" name="kommentaar_muuda" value="<?php echo "$data[1]"; ?>"/>


sellise rea vastu:

Koodijupp:
<input type="hidden" name="kommentaar_muuda" value="<?php echo htmlspecialchars($data['kommentaar']); ?>"/>



ja väljastuses vahetasin rea:

Koodijupp:
<textarea name="kommentaar_muudetud" cols="60" rows="10"><?php echo "$kommentaar_muuda"; ?></textarea>


selliseks:

Koodijupp:
<textarea name="kommentaar_muudetud" cols="60" rows="10"><?php echo stripslashes("$kommentaar_muuda"); ?></textarea>



Nüüd proovin nats uurida seda asja, et miks just nii see asi tööle läheb ja miks mitte kasvõi natukene teisiti, ausalt öeldes ei saa veel asjast eriti aru, lihtsalt lambist ühel hetkel hakkas tööle.

Kui keegi veel viitsib võiks kommenteerida, kas nii olekski normaalne sellist olukorda lahendada või peaksin tegelikult hoopis teise nurga alt asjale lähenema ja see siin on lihtsalt üks segane variant oma tahtmise saavutamiseks...

Suur tänu igaljuhul!

30.09.2005 20:57:41 Vajutades siia näed kasutaja incucu profiili

muidumeez
Ignorantia non est
argumentum


Postitusi: 3864
Tase: Administraator
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: Ei saa jutumärke <textarea>-sse panna

Kuule, mis kurat sunnib neid algajaid muutujaid jutumärkidesse toppima?
Sinu näites siis:

PHP kood:

<?php echo stripslashes("$kommentaar_muuda"); ?>



Samas piisaks selle lause tegemiseks ka

PHP kood:

<?php=stripslashes($kommentaar_muuda?>



Juba php.ee-s küsis keegi sult, et mis sind ikka sunnib neid jutumärke sinna toppima? Aga ei, idiootse järjekindlusega topid sa neid edasi ...

___________________________________________________
An Opinion Is Like An Asshole -- Everybody Has One

01.10.2005 13:13:39 Vajutades siia näed kasutaja muidumeez profiili

incucu

Postitusi: 4
Tase: 1
Olek: Offline

Hinnang: Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10
RE: Ei saa jutumärke <textarea>-sse panna

Ei noh, selge... ära ärritu siis .
Proovisin noh iga hinnaga sellest konkreetsest probleemist jagu saada ja ei jõudnud teisi soovitusi jälgida samal ajal
Ma enam nii ei tee!

01.10.2005 13:33:40 Vajutades siia näed kasutaja incucu profiili

muidumeez
Ignorantia non est
argumentum


Postitusi: 3864
Tase: Administraator
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: Ei saa jutumärke <textarea>-sse panna

Tsiteeritud tekst:
Ei noh, selge... ära ärritu siis .
Proovisin noh iga hinnaga sellest konkreetsest probleemist jagu saada ja ei jõudnud teisi soovitusi jälgida samal ajal
Ma enam nii ei tee!

Tegelikult paha, et ei vaata ja ei õpi ...

___________________________________________________
An Opinion Is Like An Asshole -- Everybody Has One

01.10.2005 13:43:35 Vajutades siia näed kasutaja muidumeez profiili

jutumees
$jutumees = $me;


Postitusi: 68
Tase: 4
Olek: Offline

Hinnang: Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10
RE: Ei saa jutumärke <textarea>-sse panna

eks viga võib olla ka selles, et kuulnud asja nagu: muutujad jutumärkide ( " ) sees...

___________________________________________________
Kas paneb mõtlema???

01.10.2005 18:33:41 Vajutades siia näed kasutaja jutumees profiili
Kokku: 25955 registreerunud kasutajat, 9711 teemat, 54603 postitust.
Täna on neljapäev, 28. mai 2020. Kell on 04:50.

    Vaata selle lehe printerisõbralikku versiooni

Avaleht   -    Skriptikogu   -    Teated   -    Foorum   -    Reklaam   -    Tagasiside   -    Kasutamise reeglid

© Copyright 2002-2020 PHP Center. Kõik õigused reserveeritud.