Autor Zpráva
jtfcobra
Profil
Ahoj nelze ukladat z <script type="text/javascript" src="ckeditor/ckeditor.js"></script>

Chyba: Data too long for column 'obsah_cz' at row 1


Formular
      <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
        <p>
          <input name="zkratka" type="hidden" id="zkratka" value="<?php echo $zkr; ?>">
          <input name="jazyk" type="hidden" id="jazyk" value="<?php echo $_GET['jazyk']; ?>">
          <textarea name="text" id="text"><?php echo $soubor; ?></textarea>
          <script>
 CKEDITOR.replace( 'text' );
        </script>
          </p>
        <p>
          <input name="nadpis" type="text" id="nadpis" value="<?php echo $soubornazev; ?>">
        </p>
        <p>
          <input type="submit" value="Ulozit zmeny" name="submit">
        </p>
      </form>


      <?php
   $con = @mysql_connect($hostname_test,$username_test,$password_test);
   $database = mysql_select_db($database_test);
    if(isset($_POST['submit']))
  {
  $file = mysql_real_escape_string($_POST['text']);
  $postnazev=mysql_real_escape_string($_POST['nadpis']);
  $postzkratka= $_POST['zkratka'];
  mysql_query("SET NAMES 'utf8_general_ci'"); 
  if ($_POST['jazyk']=='cz'){ $query ="update stranky set obsah_cz='$file' , nazev_cz='$postnazev' where zkratka='$postzkratka'";};
  if ($_POST['jazyk']=='en'){ $query ="update stranky set obsah_en='$file' , nazev_en='$postnazev' where zkratka='$postzkratka'";};
  if ($_POST['jazyk']=='de'){ $query ="update stranky set obsah_de='$file' , nazev_de='$postnazev' where zkratka='$postzkratka'";};
  $result = mysql_query($query,$con);
  if(!$result)
  {
   echo 'Není uloženo</br>';
   echo die("Chyba: ".mysql_error());;
  }
  else
  {
   echo 'Uspesne ulozeno';
   header("Location: stranky.php");
   die();
  }
 }
?>



DROP TABLE IF EXISTS `hotelweb`.`stranky`;
CREATE TABLE  `hotelweb`.`stranky` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `nazev_cz` text CHARACTER SET latin1,
  `obsah_cz` varchar(800) CHARACTER SET latin1 DEFAULT NULL,
  `nazev_en` text CHARACTER SET latin1,
  `obsah_en` varchar(800) CHARACTER SET latin1 DEFAULT NULL,
  `nazev_de` text COLLATE utf8_czech_ci,
  `obsah_de` varchar(800) COLLATE utf8_czech_ci DEFAULT NULL,
  `zkratka` text COLLATE utf8_czech_ci,
  `internipopis` text COLLATE utf8_czech_ci,
  `stranka` text COLLATE utf8_czech_ci,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;
pcmanik
Profil
jtfcobra:
A otázka? Chybová hláška hovorí jasne text ktorý sa snažíš uložiť je väčší ako maximálny možný.
Keeehi
Profil
Očividně se snažíš zapsat více jak 800 znaků do sloupce obsah_cz. Stačí zvětšit jeho limit. Nezapomeň, že WYSIWYG editory generují html, takže znaků co je potřeba uložit je více než v editoru vidíš.

Kódování sloupců je podivné, zřejmě jsi tomu nevěnoval při vytváření tabulky pozornost. Podívej se na to.
Máš tam SQL injection zranitelnost
jtfcobra
Profil
Super děkuji pomohlo to


Jak osetrim SQL injection
pcmanik
Profil
jtfcobra:
google sa dnes pokazil? a len tak mimochodom mysql_ funkcie už v PHP 7 niesu, takže to vyvýjaš projekt pre PHP 5.5+ (kde ti musí dávať hlášky o deprecated) v roku 2018?
Keeehi
Profil
jtfcobra:
Jak osetrim SQL injection
Podívej se na rozdíl mezi řádky 7 a 8. A pro příště použij nějakou knihovnu, která na to bude myslet za tebe. To abys na to nemohl zapomenout.
Kajman
Profil
jtfcobra:
Navíc pozor na to, že znaková sada latin1 nepodporuje všechna písmena z češtiny. A naopak názvy v němčině není vhodné řadit dle českých pravidel.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: