Autor Zpráva
ePess
Profil *
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
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 *
Ok, díky, moc jsi mi pomohl :)
ePess
Profil *
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&amp;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
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
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&amp;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 *
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 . '>&lt;&lt; </a>&nbsp;&nbsp;Články '.($start+1)." až ".$konec." z ".$pocet." &nbsp;&nbsp;"; // 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 . '> &gt;&gt;</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&amp;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
na 43 řáku byla další chybka, tady je to správně:
if(isset($_SESSION['kontrola'])){
ePess
Profil *
Pořád mi to nejde .. Já nevim co s tím už :/
ePess
Profil *
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
<?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.">&lt;&lt; </a>&nbsp;&nbsp;Články ".($start+1)." až ".$konec." z ".$pocet." &nbsp;&nbsp;"; // 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."> &gt;&gt;</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&amp;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
ePess: Úvodzovky
pexxxik
Profil
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 *
Nyní se mi ve vloz.php nezobrazuje žádný text...
tiso
Profil
ePess: snažíš sa používať $_SESSION, ale nikde tam nevidím session_start().
ePess
Profil *
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 *
ale ase to bude tím že to mám špatně :/
pexxxik
Profil
hele session_start() musíš mít na začátku dokumentu ty ho máš někde uprostřed to je špatně!
ePess
Profil *
no jo, ale takhle bude mít session každý kdo dá stránku s administrací :/
pexxxik
Profil
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 *
ok, ale jak to tedy udělat, abych měl session jen pokud zadám správné heslo?
pexxxik
Profil
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 *
a mam dát session_start nahoru?
pexxxik
Profil
jj
ePess
Profil *
Stejně se mi nic neukáže - soubor vloz.php:
?
if(isset($_SESSION['kontrola'])){
echo '
pexxxik
Profil
pošli celý soubor, nebo mi dej icq
ePess
Profil *
361746946

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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