Autor | Zpráva | ||
---|---|---|---|
ePess Profil * |
#1 · Zasláno: 12. 8. 2009, 10:06:32
Zdravím, mám menší problém..
Mám administraci, i s jednoduchým přihlášením.. <form action="?stranka=admin" method="post"> <input name="heslo" type="password"> <input type="submit" value="ok"> </form> <? $heslo =$_POST['heslo']; if ($heslo=="heslo") echo " Ověření_hesla................................OK <br> <a href='?stranka=vloznovinku'>Vložit novinku</a>"; else echo "<small>admin webu</small>"; ?> a přes to se vkládají novinky.. jenže jsem si udělal i editaci & mazání novinek, jenže to je i na hlavní stránce (text novinky & pod tím SMAZAT nebo EDIT) .. A k těmto dvěma funkcím má přístup každý uživatel.. Proto se chci zeptat jestli mi někdo neporadí jak to vyřešit, nejlépe pomocí SESSION .. Díky |
||
pexxxik Profil |
#2 · Zasláno: 12. 8. 2009, 11:48:12
Ahoj, nechápu přesně tvůj dotaz, ale, tak třeba si to myslel takhle, toto mě jen tak v rychlosti napadlo, tak třeba ti to pomůže....
<?php session_start(); ?> //toto musíš dát úplně na první řádek dokumentu i před <html> a vše ostatní <form action="?stranka=admin" method="post"> <input name="heslo" type="password" /> // inputy musíš vždy ukončovat <input type="submit" value="ok" /> </form> <? $heslo =$_POST['heslo']; if ($heslo=="heslo") { $_SESSION['kontrola'] = 1; echo "Ověření_hesla................................OK <br /> // stejně tak musíš ukončovat i <br />, přečti si něco o validaci kódu <a href='?stranka=vloznovinku'>Vložit novinku</a><br />"; } else echo "<small>admin webu</small>"; ?> No a tam kde potřebuješ mít smazat a edit dáš todle: <?php if(isset($_SESSION'[kontrola'])){ echo "<a href=\"?stranka=smazat\">SMAZAT</a><br /> <a href\"?stranka=edit\">EDIT</a><br />"; } |
||
ePess Profil * |
#3 · Zasláno: 12. 8. 2009, 12:04:44
Ok, díky, moc jsi mi pomohl :)
|
||
ePess Profil * |
#4 · Zasláno: 12. 8. 2009, 12:18:55
Hlasí mi to
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ')' v této části kódu.. while($row = mysql_fetch_array($vypis)) { echo "<h2>".$row["nadpis"]."</h2>\n"; echo "<p>".$row["text"]."</p>\n"; if(isset($_SESSION'[kontrola'])){ echo "<a href='?stranka=edit&clanek=".$row["id"]."'>ZMĚNIT</a> | <a href='?stranka=novinky&del=ok&id=".$row["id"]."'>SMAZAT</a>"; };} echo "<hr>"; mysql_close(); //odpojíme se z db ?> Nevím co to způsobuje. Nemůže to být těch moc uvozovek? |
||
tiso Profil |
#5 · Zasláno: 12. 8. 2009, 12:26:39
ePess: chýba ti jedna ukončovacia zátvorka na riadku s while a tých úvodzoviek tam máš akurát, aj keď sa to dá zapísať jednoduchšie.
|
||
pexxxik Profil |
#6 · Zasláno: 12. 8. 2009, 13:01:27
v kódu sem našel jeden středník navíc, je to tam vyznačené
while($row = mysql_fetch_array($vypis)) { echo "<h2>".$row["nadpis"]."</h2>\n"; echo "<p>".$row["text"]."</p>\n"; if(isset($_SESSION'[kontrola'])){ echo "<a href='?stranka=edit&clanek=".$row["id"]."'>ZMĚNIT</a> | <a href='?stranka=novinky&del=ok&id=".$row["id"]."'>SMAZAT</a>"; }} // Zde byl podle mě zbytečný středník echo "<hr>"; mysql_close(); //odpojíme se z db ?> |
||
ePess Profil * |
#7 · Zasláno: 12. 8. 2009, 13:06:51
Už si nevím rady..projel jsem celý kód 3x...
<?php include 'config.php'; //načteme soubor s údaji pro připojení k db mysql_connect($dbserver, $dblogin, $dbheslo); // připojíme se k db mysql_select_db($dbnazev); // vybereme db mysql_query("SET NAMES 'cp1250'"); // nastavíme kódování //***************************** mazání článků ************************************ if($del=="ok") //pokud odklepneme smazání článku { mysql_query("delete from aktuality where id=".$id.""); //smažeme článek echo "<b>Údaj byl smazán</b>"; //a vypíšeme úspěšnost } //******************* nastavení navigace a výběr dat z databáze ****************** if(!$start) $start=0; // pokud nebude klepnuto na další nebo předchozí příspěvek zobrazí se od posledního $prispevku = "2"; // počet příspěvků které chceme vypsat na stránku $vypis = mysql_query("SELECT * FROM aktuality order by id desc limit ".$start.", ".$prispevku.""); //vybíráme data z "aktualit" a vypisujeme od posledního příspěvku $pocet=mysql_num_rows(mysql_query('select * from aktuality')); //spočítáme všechny záznamy v databázi //******************************** navigace ************************************** $trida="class='neakt'"; // pokud navigace << nebu mít kam navigovat vloží se do odkazu neaktivní třída if(($start-$prispevku)>=0) //Pokud navigace << bude mít kam pokračovat... $trida=' href="?start='.($start-$prispevku).'" class="akt"'; //...vloží se odkaz na předchozí stránku $konec=$start+$prispevku; if($pocet<$konec) $konec=$pocet; echo '<a ' . $trida . '><< </a> Články '.($start+1)." až ".$konec." z ".$pocet." "; // vypíšeme navigační odkaz << a počet článků $trida="class='neakt'"; // pokud navigace >> nebu mít kam navigovat vloží se do odkazu neaktivní třída if(($start+$prispevku)<$pocet) //Pokud navigace >> bude mít kam pokračovat... $trida=' href="?start=' . ($start+$prispevku) . '" class="akt"'; //...vloží se odkaz na další stránku echo '<a ' . $trida . '> >></a>'; // vypíšeme navigační odkaz >> //********************************* výpis článků ********************************* while($row = mysql_fetch_array($vypis)) { echo "<h2>".$row["nadpis"]."</h2>\n"; echo "<p>".$row["text"]."</p>\n"; if(isset($_SESSION'[kontrola'])){ echo "<a href='?stranka=edit&clanek=".$row["id"]."'>ZMĚNIT</a> | <a href='?stranka=novinky&del=ok&id=".$row["id"]."'>SMAZAT</a>"; }} // Zde byl podle mě zbytečný středník echo "<hr>"; mysql_close(); //odpojíme se z db ?> |
||
pexxxik Profil |
#8 · Zasláno: 12. 8. 2009, 13:33:21
na 43 řáku byla další chybka, tady je to správně:
if(isset($_SESSION['kontrola'])){ |
||
ePess Profil * |
#9 · Zasláno: 12. 8. 2009, 13:39:46
Pořád mi to nejde .. Já nevim co s tím už :/
|
||
ePess Profil * |
#10 · Zasláno: 12. 8. 2009, 13:52:26
Nyní pro změnu v souboru vloz.php --
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' a kod je <? include 'config.php'; //načteme soubor s údaji pro připojení k db mysql_connect($dbserver, $dblogin, $dbheslo); // připojíme se k db mysql_select_db($dbnazev) // vybereme db.. or die("Chyba! Databáze nebo tabulka nebyla nalezena! Pokračujte <a href=\"install.php\">zde</a>"); mysql_query("SET NAMES 'cp1250'"); // nastavíme kódování //když odešleme formulář následující script data uloží to tabulky v databázi if(isset($_POST['send'])) { $nadpis = htmlspecialchars($_POST['nadpis']); //při odeslání příspěvku se nebezpečné znaky změní na entity $text = htmlspecialchars($_POST['text']); //při odeslání příspěvku se nebezpečné znaky změní na entity $text=str_replace("\n","<br>",$text); //při odentrování v textarey se toto převede na odřádkování $vloz ="insert into aktuality set nadpis='".$nadpis."', text='".$text."';"; $result=mysql_query($vloz); //a přesměrujeme na zobrazení článků echo '<script type="text/javascript" for="window" event="onLoad()"> <!-- window.location.href="?stranka=vlozitnovinku&edit=ok" // --> </script>'; } if($edit == "ok") echo '<b>Údaje byly vloženy</b>'; mysql_close(); ?> <? if(isset($_SESSION['kontrola'])){ echo " <form method="post"> Nadpis: <input name="nadpis" type="text" size="20" maxlength="20"><br /> Text: <textarea name="text" cols="30" rows="3"></textarea><br /> <input type="submit" value="Vložit" name="send"> </form>";} ?> Dělá to ten $SESSION |
||
pexxxik Profil |
#11 · Zasláno: 12. 8. 2009, 13:53:37
<?php include 'config.php'; //načteme soubor s údaji pro připojení k db mysql_connect($dbserver, $dblogin, $dbheslo); // připojíme se k db mysql_select_db($dbnazev); // vybereme db mysql_query("SET NAMES 'cp1250'"); // nastavíme kódování //***************************** mazání článků ************************************ if($del=="ok") //pokud odklepneme smazání článku { mysql_query("delete from aktuality where id=".$id); //smažeme článek echo "<b>Údaj byl smazán</b>"; //a vypíšeme úspěšnost } //******************* nastavení navigace a výběr dat z databáze ****************** if(!$start) $start=0; // pokud nebude klepnuto na další nebo předchozí příspěvek zobrazí se od posledního $prispevku = "2"; // počet příspěvků které chceme vypsat na stránku $vypis = mysql_query("SELECT * FROM aktuality order by id desc limit ".$start.", ".$prispevku); //vybíráme data z "aktualit" a vypisujeme od posledního příspěvku $dotaz = mysql_query('select * from aktuality') $pocet=mysql_num_rows($dotaz); //spočítáme všechny záznamy v databázi //******************************** navigace ************************************** $trida="class='neakt'"; // pokud navigace << nebu mít kam navigovat vloží se do odkazu neaktivní třída if(($start-$prispevku)>=0) //Pokud navigace << bude mít kam pokračovat... $trida=" href=\"?start=".($start-$prispevku)."\" class=\"akt\""; //...vloží se odkaz na předchozí stránku $konec=$start+$prispevku; if($pocet<$konec) $konec=$pocet; echo "<a ".$trida."><< </a> Články ".($start+1)." až ".$konec." z ".$pocet." "; // vypíšeme navigační odkaz << a počet článků $trida="class='neakt'"; // pokud navigace >> nebu mít kam navigovat vloží se do odkazu neaktivní třída if(($start+$prispevku)<$pocet) //Pokud navigace >> bude mít kam pokračovat... $trida=" href=\"?start=".($start+$prispevku)."\" class=\"akt\""; //...vloží se odkaz na další stránku echo "<a ".$trida."> >></a>"; // vypíšeme navigační odkaz >> //********************************* výpis článků ********************************* while($row = mysql_fetch_array($vypis)) { echo "<h2>".$row["nadpis"]."</h2>\n"; echo "<p>".$row["text"]."</p>\n"; if(isset($_SESSION['kontrola'])){ echo "<a href=\"?stranka=edit&clanek=".$row["id"]."\">ZMĚNIT</a> | <a href=\"?stranka=novinky&del=ok&id=".$row["id"]."\">SMAZAT</a>"; }} echo "<hr />"; mysql_close(); //odpojíme se z db ?> Zkus to teď, jinak, mě to píše plno chyb, ale to je kvůli tomu, že nemám přístup do databáze atp., tobě to pořád píše tu smaou, kterou si už zmiňoval? |
||
tiso Profil |
#12 · Zasláno: 12. 8. 2009, 13:55:34
ePess: Úvodzovky
|
||
pexxxik Profil |
#13 · Zasláno: 12. 8. 2009, 14:30:39
soubor vloz.php:
<? if(isset($_SESSION['kontrola'])){ echo ' <form method="post"> Nadpis: <input name="nadpis" type="text" size="20" maxlength="20"><br /> Text: <textarea name="text" cols="30" rows="3"></textarea><br /> <input type="submit" value="Vložit" name="send"> </form>';} ?> |
||
ePess Profil * |
#14 · Zasláno: 12. 8. 2009, 14:52:17
Nyní se mi ve vloz.php nezobrazuje žádný text...
|
||
tiso Profil |
#15 · Zasláno: 12. 8. 2009, 15:21:26
ePess: snažíš sa používať $_SESSION, ale nikde tam nevidím session_start().
|
||
ePess Profil * |
#16 · Zasláno: 12. 8. 2009, 15:25:20
session_start() mám pokud proběhne přihlášení v pořádku..
<form action="?stranka=admin" method="post"> <input name="heslo" type="password"> <input type="submit" value="ok"> </form> <? $heslo =$_POST['heslo']; if ($heslo=="xxxxxxx") { <?php session_start(); ?> echo "Ověření_hesla................................OK <br /> Startování_relace...........................OK <br /> <a href='?stranka=vloznovinku'>Vložit novinku</a><br />"; } else echo "<small>admin webu</small>"; ?> |
||
ePess Profil * |
#17 · Zasláno: 12. 8. 2009, 15:33:14
ale ase to bude tím že to mám špatně :/
|
||
pexxxik Profil |
#18 · Zasláno: 12. 8. 2009, 16:00:44
hele session_start() musíš mít na začátku dokumentu ty ho máš někde uprostřed to je špatně!
|
||
ePess Profil * |
#19 · Zasláno: 12. 8. 2009, 17:42:03
no jo, ale takhle bude mít session každý kdo dá stránku s administrací :/
|
||
pexxxik Profil |
#20 · Zasláno: 12. 8. 2009, 18:02:53 · Upravil/a: pexxxik
no jo, ale to se jenom session pustí to je správně pak tam autorizuju session promennou podle které to kontroluju... navíc jinak to nevymyslíš, jestli chceš session dej to na začátek, jinak ti session nebude fungovat, tam to musí být, je to pravidlo php...
|
||
ePess Profil * |
#21 · Zasláno: 12. 8. 2009, 18:06:41
ok, ale jak to tedy udělat, abych měl session jen pokud zadám správné heslo?
|
||
pexxxik Profil |
#22 · Zasláno: 12. 8. 2009, 18:12:10
tam jak si měl session_start dej: $_SESSION['kontrola'] = 1; // To ti vytvoří proměnnou kontrola..... no tady je to pro jistotu v php kódu:
<form action="?stranka=admin" method="post"> <input name="heslo" type="password"> <input type="submit" value="ok"> </form> <? $heslo =$_POST['heslo']; if ($heslo=="xxxxxxx") { $_SESSION['kontrola'] = 1; echo "Ověření_hesla................................OK <br /> Startování_relace...........................OK <br /> <a href='?stranka=vloznovinku'>Vložit novinku</a><br />"; } else echo "<small>admin webu</small>"; ?> |
||
ePess Profil * |
#23 · Zasláno: 12. 8. 2009, 18:36:07
a mam dát session_start nahoru?
|
||
pexxxik Profil |
#24 · Zasláno: 12. 8. 2009, 18:37:10
jj
|
||
ePess Profil * |
#25 · Zasláno: 12. 8. 2009, 18:39:46
Stejně se mi nic neukáže - soubor vloz.php:
? if(isset($_SESSION['kontrola'])){ echo ' |
||
pexxxik Profil |
#26 · Zasláno: 12. 8. 2009, 18:43:52 · Upravil/a: pexxxik
pošli celý soubor, nebo mi dej icq
|
||
ePess Profil * |
#27 · Zasláno: 12. 8. 2009, 18:48:51
361746946
|
||
Časová prodleva: 15 let
|
0