Autor Zpráva
noby
Profil
Dobrý den.
Mám skript pro publikaci článku, myslel jsem že bude fungovat jenže nejde. Zda zveřejnit nebo ne zatrhávám pomoci input checkbox. Poradíte kde mám chybu?
<?php
include("../../connecting.php");
if(isset($_POST['clanek'])){
$id = $_POST['id'];
$nazev = $_POST['nazev'];
$popis = $_POST['popis'];
$clanek = $_POST['clanek'];
$hit = $_POST['hit'];
$vlozen = $_POST['vlozen'];
mysql_query("INSERT INTO clanky (id, nazev, popis, clanek, hit, vlozen) VALUES('$id','$nazev','$popis','$clanek','$hit',".time().")") or die (mysql_error());
}else{
echo 'Článek nebude zveřjněn na blogu.';
}elseif{
echo 'Článek bude zveřejněn na blogu.';
}
header("location: ../admin.php?page=articl");
?>


<?php
$komentar = $_POST['komentare'];
$clanek = $_POST['clanek'];
echo '<div class="oznam">
      <input type="checkbox" name="komentare">Povolit komentáře | <input type="checkbox" name="clanek">Zveřejnit článek
      </div>
      <form method="post" action="inc/add.php">
      <table>
      <tr><td>Titulek:</td><td><input type="text" name="nazev"></td></tr>
      <tr><td>Popis:</td><td><input type="text" name="popis" style="width: 600px;height: 100px;"></td></tr>
      <tr><td>Článek:</td><td><textarea type="text" name="clanek" style="width: 600px;height: 400px;"></textarea></td></tr>
      <tr><td></td><td><input class="submit" type="submit" value="Vložit článek"></td></tr>
      </table>
      </form>';
?>
WMPopi
Profil
Máš tam trochu pomotaný else a elseif větve

if(isset($_POST['clanek'])) {
  mysql_query(..
  echo 'Článek bude zveřjněn na blogu.';
}
else {
  echo 'Článek nebude zveřjněn na blogu.';
}
noby
Profil
WMPopi:
Upravil jsem to tedy jak jsi napsal, ale nefunguje tedy funguje, ale článek se vloží na blog bez ohledu na zatržený checkbox. Jak udělat aby bral ohled zatržený checkbox?
<?php
  include("../../connecting.php");
if(isset($_POST['clanek'])) {
  $id = $_POST['id'];
  $nazev = $_POST['nazev'];
  $popis = $_POST['popis'];
  $clanek = $_POST['clanek'];
  $hit = $_POST['hit'];
  $vlozen = $_POST['vlozen'];
  mysql_query("INSERT INTO clanky (id, nazev, popis, clanek, hit, vlozen) VALUES('$id','$nazev','$popis','$clanek','$hit',".time().")") or die (mysql_error());
  echo 'Článek bude zveřjněn na blogu.';
}else {
  echo 'Článek nebude zveřjněn na blogu.';
}
  header("location: ../admin.php?page=articl");
?>
WMPopi
Profil
noby:
jo jasně, checkboxům přidej value, třeba value="1" a pak kontroluj if($_POST['clanek']) {
jenikkozak
Profil
noby:
Chyb tam máš víc:
- Políčka s checkboxy máš mimo <form>, proto se ti nemohou odeslat.
- Nevím, proč vytváříš proměnné id, nazev, popis, clanek..., když je pak stejně jen použiješ v dotazu na databázi. Proč tam nepoužiješ přímo to pole? Ale budiž.
- Proč vypisuješ něco na stránku, že článek bude/nebude zveřejněn, když stejně záhy chceš stránku přesměrovat, což by způsobilo, že by se ti ty hlášky ani nevypsaly?
- Adresa uvedená v Location by měla být absolutní.
- Před vkládáním dat do databáze je vůbec neověřuješ, což je bezpečnostní riziko.
noby
Profil
Jak pak takovou kontrolu provést?
WMPopi
Profil
noby:
hledej sql injection

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:

0