Autor Zpráva
Davex8
Profil *
Zdar. Udělal jsem si vlastní redakční systém. Docela funguje,´ale mám problém s tím, že když dám www.example.com/index.php tak se zobrazí error. Při výpisu to mám řešené tak, že se používá proměnná id. např.: index.php?id=3; a já bych chtěl poradit jak by se při zavolání index vypsal záznam id 1 bez zobrazení index.php?id=1

Je to nějak možné?
martin1312
Profil
if(!isset($_GET['id'])) $_GET['id'] = 1;
Davex8
Profil *
Pokusil jsem se jej přidat, ovšem bez úspěchu. Můj kód vypadá takto?

    <?php
include 'admin/connect.php';
$vypis = mysql_query("select * from pages WHERE id=$_GET[id] "); 
while ($polozka = mysql_fetch_array($vypis)) { echo "  <h2> $polozka[nadpis]</h2> 
<p> $polozka[maintext] </p>
   "
     ; } ?>



Zkoušel jsem to přidat na 7 řádek
mimochodec
Profil
Davex8:
Zkoušel jsem to přidat na 7 řádek

Proč právě tam? O tom, která stránka se vypíše, se rozhoduje výše.
martin1312
Profil
na 7. riadku ti to bude na 2 veci. Predsa data načítavaš z DB na riadku 3, tak to musíš dať predeň. + ošetri si to na SQL injection

mimochodec rýchlejší
Davex8
Profil *
martin1312:
Díky!! Stačí to zabezpečené takto? Nebo mám ještě něco přidat?
<?php
mysql_query("SELECT * FROM pages WHERE id = " . intval($_GET["id"]));

mysql_query("SELECT * FROM pages WHERE id = '$_GET[id]'");
?>
panther
Profil
Davex8:
nikdy nenaplnuj globalni promenne, takze asi takhle:

include 'admin/connect.php';
$id = isset($_GET['id']) ? $_GET['id'] : 1;
$vypis = mysql_query("select * from pages WHERE id= ". (int)$id . " LIMIT 1"); // limit 1 tu neni nezbytny, ale muzes jej doplnit 
...

Co budes delat, az zaznam s id=1 smazes? Premyslel jsi nad tim?
Davex8
Profil *
pantherZáznam 1 smazat nedovolím :D.
Takto vypadá celý kód. Je dobře zabezpečen na sql injection?
<?php
// ošetření vstupních dat
mysql_query("SELECT * FROM pages WHERE id = " . intval($_GET["id"]));

// spolehnutí se na magic_quotes_gpc
mysql_query("SELECT * FROM pages WHERE id = '$_GET[id]'");
?>
    <?php
include 'admin/connect.php';
$id = isset($_GET['id']) ? $_GET['id'] : 1;
$vypis = mysql_query("select * from pages WHERE id= ". (int)$id); 
while ($polozka = mysql_fetch_array($vypis)) { echo "  <h2> $polozka[nadpis]</h2> 
<p> $polozka[maintext] </p>
   "
     ; } 
     
   
     ?>
mimochodec
Profil
Davex8:

Jaký je smysl toho, když dvakrát po sobě voláš skoro stejný dotaz, jen jinak ošetřený?
Kromě toho: proč se až po těch dotazech připojuješ k databázi?
$polozka[nadpis] .. toto ti funguje?
Davex8
Profil *
mimochodec
Ano, funguje to dobře :D
panther
Profil
Davex8:
když vidím tenhle kousek kódu (a vlastně i tento dotaz), mám o ono „CMS“ trochu obavy. Je to tvůj projekt, takže ti do toho kecat nebudu, ani nechci. Každopádně, provádění SQL dotazů (proč ho máš dvakrát asi nikdo nepochopí, proč spoléháš na „magic_quotes“ už tuplem ne) a následně připojení k DB a ten samý dotaz potřetí.

Vlastně, ty první dva ani neproběhnou - případný mysql result nepřiřazuješ do proměnné (dále s ním nepracuješ), při vypsání mysql_error bys zjistil, že nejsi připojen k DB.

Osobně bych ti doporučil než patlat (ano, jinak to nazvat nejde) začít od základů PHP. A teprve s nimi se pokusit napsat nějakou menší aplikaci.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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