« 1 2 3 »
Autor Zpráva
fili
Profil
Ak je užívateľ prihlásený vo svojom účte, ako vypíšem jeho údaje z databázy do formulára, aby si ich následne mohol zmeniť? Skúšal som, ale jediné, čo sa mi podarilo, bolo vypísanie celej tabuľky, ale nie ten riadok, ktorý zodpovedá už prihlásenému užívateľovi.
Taps
Profil
fili:
projdi si tento seriál http://pecan.cz/index.php?id=39&n=registrace-prakticky-priklad
Enko
Profil *
Stejným způsobem, kterým vybíráš všechny uživatele z DB, vybereš jen toho jednoho pomocí podmínky WHERE ve které přesně definuješ parametry tak, aby odpovídali jen tomu konkrétnímu uživateli. Například:
SELECT * FROM users WHERE user_id=1;
za klauzuli WHERE můžeš dát cokoliv, co potřebuješ tak, aby jsi vyfiltroval jen to, co potřebuješ.
fili
Profil
Taps:
Dik. Mrknem na to.
Enko
Problém je v tom, že užívateľ je už prihlásený, či to netreba v kóde
nejak definovať nejak ako if(prihlaseny == true) ...
Adam16
Profil
fili:

http://www.linuxsoft.cz/diskuze.php?id_vazba=16880&type_item=8

Skus si pozriet toto...
Enko
Profil *
Adam16:
Tento příklad je totální nesmysl a začátečníkovi toto neukazuj, protože tam je několik bezpečnostích děr. Sice to tam níže zmiňují, ale začátečník toto stejně z lenosti neopraví.

fili:
Nejsem si úplně jistý co potřebuješ. Chápu to tak, že chceš udělat:
1. Uživatel se přihlásí do svého profilu na tvém webu
2. V jeho profilu bude možnost editovat vlastní údaje, které vyplnil při registraci. Tzn, že mu do předem připraveného formuláře předvyplníš jeho údaje tak, aby si je mohl sám změnit. Je to tak?

Jestli ano, tak využij $_SESSION[] a do ní si ulož identifikátor uživatele, který je pro každého jedinečný a na jeho základě si vyselektuješ jen ty potřebné údaje k tomuto uživateli.
fili
Profil
Enko:
Áno, pochopil si to celkom presne.

tak využij $_SESSION[]....
aj keď pri prihlasovasní id nevyužívam?
Prihlásenie mám takto:

if($password == $row[0])
{
    $_SESSION['prihlaseny'] = 'ano'; ...
Enko
Profil *
Výborně, tak si založ další $_SESSION, do které si uložíš nějaký jasný unikátní identifikátor(třeba emailovou adresu uživatele nebo ID záznamu z databázové tabulky s uživateli), který získáš při úspěšném uživatelově přihlášení. Hodnotu této $_SESSION pak doplníš do SQL dotazu, který ti vrátí údaje jen toho konkrétního uživatele. Bude ti to stačit takto nebo to chceš vypsat podrobně?
fili
Profil
Enko:
Som začiatočník a radšej prakticky ako teoreticky.
Adam16
Profil
Enko:
začátečník

ja som tiez začiatočnik a nevidim v tom problem... je tam sice riešene cookie ale čo je na tom take tazke prepisat a vytvorit SESSION ak nechces cookie... ?

a nikto ti tu neda presny kod ako ty si myslis ze napišeš na forum a niekto ti tu vypiše kod od hlavy az po pätu...
fili
Profil
Adam16:
Fórum je snáď dobrovoľné - kto chce poradí, kto nie nemusí.

Tak mám kód, ale nič mi nevypisuje. Kde je chyba?
$id = $_SESSION['id'];
 $sql = "SELECT 'id', 'objekt', 'meno' * FROM owners WHERE id='$id' and login='$login'";
 $result = mysql_query($sql,$con);
  $objekt = mysql_result($result,0,objekt);                              
   $meno = mysql_result($result,0,meno);
    $zodpovedna_osoba = mysql_result($result,0,zodpovedna_osoba);
     $ulica = mysql_result($result,0,ulica);
      $cislo = mysql_result($result,0,cislo);
       $psc = mysql_result($result,0,psc);
        $mail = mysql_result($result,0,mail);
         $www = mysql_result($result,0,www);
          $mail = mysql_result($result,0,meno);
           $mobil = mysql_result($result,0,mobil);
            $meno = mysql_result($result,0,meno);
  
  if($id == $row[0])
          $_SESSION['id'] = 'true';

{ 
 echo "<form action="zmena.php" method="post">";
 echo "<table class="pridanie"><tr><td>";
 echo "Názov ubyt. zariadenia <input type="text" size="50" name="objekt" value=".htmlspecialchars($objekt)."></input></td></tr>";
 echo "<tr><td>Meno priezvisko/Firma <input type="text" size="50" name="meno" value=".htmlspecialchars($meno)."></input></td></tr>";
 echo "</form>";
 echo "<tr><td>Zodpovedná osoba <input type="text" size="50" name="zodpovedna_osoba" value=".htmlspecialchars($zodpovedna_osoba)."</input></td></tr>";
 echo "<tr><td>Vaša adresa</td></tr>";
 echo "<tr><td>Ulica <input type="text" size="50" name="ulica" value=".htmlspecialchars($ulica)."></input></td></tr>";
 echo "<tr><td>";
 echo "Číslo <input type="text" size="10" name="cislo" value=".htmlspecialchars($cislo)."></input></td></tr>";
 echo "<tr><td>PSČ <input type="text" size="6" name="psc" value=".htmlspecialchars($psc)."></input></td></tr>";
 echo "<tr><td>E-mail <input type="text" size="50" name="mail" value=".htmlspecialchars($mail)."></input></td></tr>";
 echo "<tr><td>www <input type="text" size="70" name="www" value=".htmlspecialchars($www)."></input></td></tr>";
 echo "<tr><td>Mobil <input type="text" size="13" name="mobil" value=".htmlspecialchars($mobil)."></input></td></tr>";
 echo "<tr><td>IČO <input type="text" size="8" name="mobil" value=".htmlspecialchars($mobil)."></input></td></tr>";
 echo "<tr><td>DIČ <input type="text" size="10" name="dic" value=".htmlspecialchars($dic)."</input></td></tr>";
 echo "<tr><td>IČ DPH <input type="text" size="12" name="ic_dph" value=".htmlspecialchars($ic_dph)."></input></td></tr>";
 echo "<tr><td></table>";                                                     
 echo "<br /><input type="hidden" name="login" value=".htmlspecialchars($login) ."></input>";
 echo "<input type="SUBMIT" value="Zmeniť">";
 echo "</form>";
} 
 else
{
    echo "Uviedli ste nesprávne meno alebo heslo!";
}
 
?>
Taps
Profil
fili:
Prošel sis ten link, který jsem ti poslal? Na odkaze je názorná ukázka registrace + je možné soubory stáhnout. Tvůj kod je zbytečně kostrbatý
juriad
Profil
fili:
* Chybí ti session_start() na začátku??
* Nepoužívej mysql_result, je pomalá, viz dokumentace.
* Celá počáteční klauzuje sql dotazu je divná; nejspíš chceš všechna pole SELECT * FROM owners, nechceš řetězce 'id', 'objekt', 'jmeno'. Pokud to měl být pokus o escapování, tak to se u názvů objektů v mysql provádí zpětnými apostrofy `. Sql dotaz je navíc děravý (SQL Injection)
* Uvozovky musíš v echu escapovat.
* Používej nějakou konvenci pro odsazovaní.
* 17. řádek ukončí if příkaz a PHP zařve na nadbytečném else na 42. řádku.
* Názvy polí na řádcích 4 -- 14 ti projdou, ale je to obrovská prasárna. Nejspiš bys je měl obalit uvozovkami (apostrofy).
* Input je nepárový tag.
* Myslím, že jsem popsal jen několik málo chyb, nejspíš jich tam bude víc. Začni znovu, nebo se u nějakého hotového řešení inspiruj.
fili
Profil
Taps:
Prihlásenie už mám hotové, teraz riešim ten výpis.
juriad:
Vďaka,
* session_start(); a aj pripojenie k DB tam samozrejme mám
Tak som to upravil, ale aj tak mi to nefunguje:
<?
 $id = $_SESSION['id'];                                  
 $sql = "SELECT `id`, `objekt`, `meno`, `zodpovedna_osoba`, `ulica`, `cislo`, `mesto`, `psc`, `mail`, `www`,`mobil`, `login`, `ico`, `dic`, `ic_dph`  * FROM owners WHERE id='$id' and login='$login'";
 $result = mysql_query($sql,$con);
  $objekt = mysql_result($result,0,objekt);                              
   $meno = mysql_result($result,0,meno);
    $zodpovedna_osoba = mysql_result($result,0,zodpovedna_osoba);
     $ulica = mysql_result($result,0,ulica);
      $cislo = mysql_result($result,0,cislo);
       $mesto = mysql_result($result,0,mesto);
        $psc = mysql_result($result,0,psc);
         $mail = mysql_result($result,0,mail);
          $www = mysql_result($result,0,www);
           $mobil = mysql_result($result,0,mobil);
            $login = mysql_result($result,0,login);
             $ico = mysql_result($result,0,ico);
              $dic = mysql_result($result,0,dic);
               $ic_dph = mysql_result($result,0,ic_dph);
            
            
  if($id == $row[0])
          $_SESSION['id'] = 'true';

{ 
 echo "<form action="skuska-vkladu.php" method="post">";
 echo "<table class="pridanie"><tr><td>";
 echo "Názov ubyt. zariadenia <input type=\"text\" size=\"50\" name=\"objekt\" value=\"".htmlspecialchars($objekt)."\"></input></td></tr>";
 echo "<tr><td>Meno priezvisko/Firma <input type=\"text\" size=\"50\" name=\"meno\" value=\"".htmlspecialchars($meno)."\"></input></td></tr>";
 echo "</form>";
 echo "<tr><td>Zodpovedná osoba <input type=\"text\" size=\"50\" name=\"zodpovedna_osoba\" value=\"".htmlspecialchars($zodpovedna_osoba)."\"</input></td></tr>";
 echo "<tr><td>Vaša adresa</td></tr>";
 echo "<tr><td>Ulica <input type=\"text\" size=\"50\" name=\"ulica\" value=\"".htmlspecialchars($ulica)."\"></input></td></tr>";
 echo "<tr><td>";
 echo "Číslo <input type=\"text\" size=\"10\" name=\"cislo\" value=\"".htmlspecialchars($cislo)."\"></input></td></tr>";
 echo "<tr><td>Mobil <input type=\"text\" size=\"13\" name=\"mesto\" value=\"".htmlspecialchars($mesto)."\"></input></td></tr>";
 echo "<tr><td>PSČ <input type=\"text\" size=\"6\" name=\"psc\" value=\"".htmlspecialchars($psc)."\"></input></td></tr>";
 echo "<tr><td>E-mail <input type=\"text\" size=\"50\" name=\"mail\" value=\"".htmlspecialchars($mail)."\"></input></td></tr>";
 echo "<tr><td>www <input type=\"text\" size=\"70\" name=\"www\" value=\"".htmlspecialchars($www)."\"></input></td></tr>";
 echo "<tr><td>Mobil <input type=\"text\" size=\"13\" name=\"mobil\" value=\"".htmlspecialchars($mobil)."\"></input></td></tr>";
 echo "<tr><td>IČO <input type=\"text\" size=\"8\" name=\"hidden\" value=\"".htmlspecialchars($login)."\"></input></td></tr>";
 echo "<tr><td>IČO <input type=\"text\" size=\"8\" name=\"ico\" value=\"".htmlspecialchars($ico)."\"></input></td></tr>";
 echo "<tr><td>DIČ <input type=\"text\" size=\"10\" name=\"dic\" value=\"".htmlspecialchars($dic)."\"</input></td></tr>";
 echo "<tr><td>IČ DPH <input type=\"text\" size=\"12\" name=\"ic_dph\" value=\"".htmlspecialchars($ic_dph)."\"></input></td></tr>";
 echo "<tr><td></table>";                                                     
 echo "<input type=\"submit\" value=\"Zmeniť\">";
 echo "</form>";
} 
 
?>
juriad
Profil
* řádek 22 přesuň až za otevírací závorku (řádek 24)
* do $_SESSION['id'] ukládej $row['id']; ne 'true'
* z SQL dotazu vyhoď hvězdičku, nemá tam co dělat
* pokud je $id číslo nevkládej ho do dotazu jako řezec, vyhoď ty apostrofy
* řádky 25 a 26, nejsou escapované uvozovky
* u výpisu většiny polí nemusíš používat funkci htmlspecialchars, protože třeba validní psč nebo mobil nikdy nebude obsahovat znaky <>&'"
* co se stane, pokud uživatel není přihlášený a přijde (jakkoli) na tuto stránku? Dostaneš notice undefined index na 2. řádku
* na 44. řádku máš chybně ukončenou tabulku
* a platí většina připomínek, které jsem psal minule
Taps
Profil
fili:
Zkus nás trošku poslouchat :-)
přikládám upravené řešení
<?
$id = (int)$_SESSION['id'];  
$login = mysql_real_escape_string($login);
                                 
$sql = "SELECT `id`, `objekt`, `meno`, `zodpovedna_osoba`, `ulica`, `cislo`, `mesto`, `psc`, `mail`, `www`,`mobil`, `login`, `ico`, `dic`, `ic_dph` FROM owners WHERE id=$id and login='$login'";

list($idUser,$objekt,$meno,$zodpovedna_osoba,$ulica,$cislo,$mesto,$psc,$mail,$www,$mobil,$login,$icom,$dic,$ic_$dph)=mysql_fetch_assoc($sql);
            
            
  if($id == $idUser)
    { 

    $_SESSION['id'] = $idUser;

    $obsah= '<form action="skuska-vkladu.php" method="post">';
    $obsah.= '<table class="pridanie"><tr><td>';
    $obsah.= 'Názov ubyt. zariadenia <input type="text" size="50" name="objekt" value="'.$objekt.'"></td></tr>';
    $obsah.= '<tr><td>Meno priezvisko/Firma <input type="text" size="50" name="meno" value="'.$meno.'"></td></tr>';
    $obsah.= '</form>';
    $obsah.= '<tr><td>Zodpovedná osoba <input type="text" size="50" name="zodpovedna_osoba" value="'.$zodpovedna_osoba.'"</td></tr>';
    $obsah.= '<tr><td>Vaša adresa</td></tr>';
    $obsah.= '<tr><td>Ulica <input type="text" size="50" name="ulica" value="'.$ulica.'"></td></tr>';
    $obsah.= '<tr><td>';
    $obsah.= 'Číslo <input type="text" size="10" name="cislo" value="'.$cislo.'"></td></tr>';
    $obsah.= '<tr><td>Mobil <input type="text" size="13" name="mesto" value="'.$mesto.'"></td></tr>';
    $obsah.= '<tr><td>PSČ <input type="text" size="6" name="psc" value="'.$psc.'"></td></tr>';
    $obsah.= '<tr><td>E-mail <input type="text" size="50" name="mail" value="'.$mail.'"></td></tr>';
    $obsah.= '<tr><td>www <input type="text" size="70" name="www" value="'.$www.'"></td></tr>';
    $obsah.= '<tr><td>Mobil <input type="text" size="13" name="mobil" value="'.$mobil.'"></td></tr>';
    $obsah.= '<tr><td>IČO <input type="text" size="8" name="hidden" value="'.$login.'"></td></tr>';
    $obsah.= '<tr><td>IČO <input type="text" size="8" name="ico" value="'.$ico.'"></td></tr>';
    $obsah.= '<tr><td>DIČ <input type="text" size="10\' name="dic\' value="'.$dic.'"</td></tr>';
    $obsah.= '<tr><td>IČ DPH <input type="text" size="12" name="ic_dph" value="'.$ic_dph.'"></td></tr>';
    $obsah.= '<tr><td></table>';                                                     
    $obsah.= '<input type="submit" value="Zmeniť">';
    $obsah.= '</form>';
 
    print $obsah;
    } 
   else{
   
   print 'Neplatné přihlašovací údaje';
   }

?>
fili
Profil
juriad:
Dik za pripomienky, kód som upravil, ale vypisuje mi len prázdny formulár. Kód viz. dole
Taps
Vďaka, ale pri použití Tvojho kódu mi zobrazí prázdnu stránku.

<?
 $id = $_SESSION['id'];                                  
 $sql = "SELECT id, `objekt`, `meno`, `zodpovedna_osoba`, `ulica`, `cislo`, `mesto`, `psc`, `mail`, `www`,`mobil`, `login`, `ico`, `dic`, `ic_dph` FROM owners WHERE id='$id' and login='$login'";
 $result = mysql_query($sql,$con);
  $objekt = mysql_result($result,0,objekt);                              
   $meno = mysql_result($result,0,meno);
    $zodpovedna_osoba = mysql_result($result,0,zodpovedna_osoba);
     $ulica = mysql_result($result,0,ulica);
      $cislo = mysql_result($result,0,cislo);
       $mesto = mysql_result($result,0,mesto);
        $psc = mysql_result($result,0,psc);
         $mail = mysql_result($result,0,mail);
          $www = mysql_result($result,0,www);
           $mobil = mysql_result($result,0,mobil);
            $login = mysql_result($result,0,login);
             $ico = mysql_result($result,0,ico);
              $dic = mysql_result($result,0,dic);
               $ic_dph = mysql_result($result,0,ic_dph);
            
            
  if($id == $row[0])
  
   { 
    $_SESSION['id'] = $row['id'];

 
 echo "<form action=\"skuska-vkladu.php\" method=\"post\">";
 echo "<table class=\"pridanie\"><tr><td>";
 echo "Názov ubyt. zariadenia <input type=\"text\" size=\"50\" name=\"objekt\" value=\"".htmlspecialchars($objekt)."\"></input></td></tr>";
 echo "<tr><td>Meno priezvisko/Firma <input type=\"text\" size=\"50\" name=\"meno\" value=\"".htmlspecialchars($meno)."\"></input></td></tr>";
 echo "</form>";
 echo "<tr><td>Zodpovedná osoba <input type=\"text\" size=\"50\" name=\"zodpovedna_osoba\" value=\"".htmlspecialchars($zodpovedna_osoba)."\"</input></td></tr>";
 echo "<tr><td>Vaša adresa</td></tr>";
 echo "<tr><td>Ulica <input type=\"text\" size=\"50\" name=\"ulica\" value=\"".htmlspecialchars($ulica)."\"></input></td></tr>";
 echo "<tr><td>";
 echo "Číslo <input type=\"text\" size=\"10\" name=\"cislo\" value=\"".htmlspecialchars($cislo)."\"></input></td></tr>";
 echo "<tr><td>Mobil <input type=\"text\" size=\"13\" name=\"mesto\" value=\"".htmlspecialchars($mesto)."\"></input></td></tr>";
 echo "<tr><td>PSČ <input type=\"text\" size=\"6\" name=\"psc\" value=\"".htmlspecialchars($psc)."\"></input></td></tr>";
 echo "<tr><td>E-mail <input type=\"text\" size=\"50\" name=\"mail\" value=\"".htmlspecialchars($mail)."\"></input></td></tr>";
 echo "<tr><td>www <input type=\"text\" size=\"70\" name=\"www\" value=\"".htmlspecialchars($www)."\"></input></td></tr>";
 echo "<tr><td>Mobil <input type=\"text\" size=\"13\" name=\"mobil\" value=\"".htmlspecialchars($mobil)."\"></input></td></tr>";
 echo "<tr><td>IČO <input type=\"text\" size=\"8\" name=\"hidden\" value=\"".htmlspecialchars($login)."\"></input></td></tr>";
 echo "<tr><td>IČO <input type=\"text\" size=\"8\" name=\"ico\" value=\"".htmlspecialchars($ico)."\"></input></td></tr>";
 echo "<tr><td>DIČ <input type=\"text\" size=\"10\" name=\"dic\" value=\"".htmlspecialchars($dic)."\"</input></td></tr>";
 echo "<tr><td>IČ DPH <input type=\"text\" size=\"12\" name=\"ic_dph\" value=\"".htmlspecialchars($ic_dph)."\"></input></td></tr>";
 echo "</table>";                                                     
 echo "<input type=\"submit\" value=\"Zmeniť\">";
 echo "</form>";
} 
 else{
   
   print 'Nesprávné prihlasovacie údaje';
   } 
?>
Taps
Profil
fili:
Mám pocit, že spolu s juriad házíme hrách na stěnu :-(
fili
Profil
Taps:
Snažím sa, ale som len začiatočník a nemám žiadne skúsenosti.
Furt mi to nevypisuje údaje, potrebujem vedie kde je hlavná chyba.
To, že je tam </input> určite nemá vplyv na funkčnosť.
Amunak
Profil
fili:
Ale má to vliv na čitelnost kódu a fakt, že ignoruješ většinu rad, které tady dostáváš, má vliv na ochotu lidí ti pomáhat. Kód, který poslal Taps v [#16] je dost dobře použitelný a měl by fungovat. Zkus ho pochopit, pak použít, a když to nebude fungovat, napiš nám, jakou chybu ti to vyhazuje, a co přesně se (ne)děje.
fili
Profil
Amunak:
Riešenie od Taps vyhadzuje prázdnu stránku, nevypisuje nič.
Môj pôvodný kód som sa snažil upraviť ako som vedel,
ale zobrazuje sa mi prázdny formulár.
Taps
Profil
fili:
Podle mě je chyba v logice skriptu. Odkud získáváš

<?
$_SESSION['id'];
?>
, které pak dosazuješ do SQL dotazu ? Asi by bylo vhodné vložit sem i kod formuláře, do kterého zadáváš přihlašovací údaje
PS:případně mi hod skripty a SQL export někam ke stažení a já se na to podívám.
Enko
Profil *
fili:
Zkus si vypsat echem $id a $login kamkoliv v tom skritpu, vypíše ti požadované informace? Vrátí ti něco? Případně co?
Zkus v databázovém rozhraní (PHPMyAdmin, Adminer, atd...) vložit ručně tvůj hotový sql dotaz včetně naplněných proměných $id a $login. Vypíše ti to požadované informace? V tvém případě by tomělo vrátit jeden řádek s požadovanými informacemi.

Zkus toto a dej vědět.
fili
Profil
Taps:
Tu je kód na prihlásenie:

 <?php

$login = $_POST['login'];
$password = sha1($_POST['password']);
$id='prihlaseny';


$result = mysql_query("SELECT `password` FROM owners WHERE login='".mysql_real_escape_string($login)."'and password='".mysql_real_escape_string($password)."'");
$row = mysql_fetch_row($result); 

if($password == $row[0])
{ 

    $_SESSION['prihlaseny'] = 'true';

echo "Prihlásený užívateľ: ".htmlspecialchars($login).""; 
echo "<div><a href=\"../logout.php\">Odhlásiť</a><p>&nbsp;</p>";
echo "<a href=\"../vkald-skuska4.php\">Aktualizácia účtu</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"../aktualizacia-regudajov.php\">Aktualizácia registračných údajov</a></div>";
  }
else
{
    echo "Uviedli ste nesprávne meno alebo heslo!";
}



?>

Toto includujem:
<?php
  ini_set("display_errors", "On");
  error_reporting(E_ALL);
 
  if (session_start()) {
    echo "<p>session inicializovano";
  } else {
    echo "<p>chyba pri spusteni session<br>";
    print_r(error_get_last());
  }
  echo "<p>session_id(): " . session_id();
 
  echo "<p>short_open_tag: " . ini_get("short_open_tag");
 
  echo "<p>ted: " . date("r");
  if (!empty($_SESSION['session'])) {
    echo "<p>hodnota: $_SESSION[session]";
  }
  $_SESSION['session'] = date("r");


?>

Vypisovanie do formulára, ktoré mi nejde:

 $id = $_SESSION['id'];                                  
 $sql = "SELECT id, `objekt`, `meno`, `zodpovedna_osoba`, `ulica`, `cislo`, `mesto`, `psc`, `mail`, `www`,`mobil`, `login`, `ico`, `dic`, `ic_dph` FROM owners WHERE id='$id' and login='$login' and '$objekt' and '$meno' and '$zodpovedna_osoba' and '$ulica' and '$cislo' and '$mesto' and '$psc' and '$mail' and '$www' and '$mobil' and '$login' and '$ico' and '$dic' and '$ic_$dph'";
  $result = mysql_fetch_assoc($sql);
  $objekt = mysql_fetch_assoc($result,0,objekt);                              
   $meno = mysql_fetch_assoc($result,0,meno);
    $zodpovedna_osoba = mysql_fetch_assoc($result,0,zodpovedna_osoba);
     $ulica = mysql_fetch_assoc($result,0,ulica);
      $cislo = mysql_fetch_assoc($result,0,cislo);
       $mesto = mysql_fetch_assoc($result,0,mesto);
        $psc = mysql_fetch_assoc($result,0,psc);
         $mail = mysql_fetch_assoc($result,0,mail);
          $www = mysql_fetch_assoc($result,0,www);
           $mobil = mysql_fetch_assoc($result,0,mobil);
            $login = mysql_fetch_assoc($result,0,login);
             $ico = mysql_fetch_assoc($result,0,ico);
              $dic = mysql_fetch_assoc($result,0,dic);
               $ic_dph = mysql_fetch_assoc($result,0,ic_dph);
            
            
  if($id == $row[0])
  
   { 
    $_SESSION['id'] = $row['id'];

 
 echo "<form action=\"skuska-vkladu.php\" method=\"post\">";
 echo "<table class=\"pridanie\"><tr><td>";
 echo "Názov ubyt. zariadenia <input type=\"text\" size=\"50\" name=\"objekt\" value=\"".htmlspecialchars($objekt) ."\"></td></tr>";
 echo "<tr><td>Meno priezvisko/Firma <input type=\"text\" size=\"50\" name=\"meno\" value=\"".htmlspecialchars($meno)."\"></td></tr>";
 echo "</form>";
 echo "<tr><td>Zodpovedná osoba <input type=\"text\" size=\"50\" name=\"zodpovedna_osoba\" value=\"".htmlspecialchars($zodpovedna_osoba)."\"</td></tr>";
 echo "<tr><td>Vaša adresa</td></tr>";
 echo "<tr><td>Ulica <input type=\"text\" size=\"50\" name=\"ulica\" value=\"".htmlspecialchars($ulica)."\"></td></tr>";
 echo "<tr><td>";
 echo "Číslo <input type=\"text\" size=\"10\" name=\"cislo\" value=\"".htmlspecialchars($cislo)."\"></td></tr>";
 echo "<tr><td>Mobil <input type=\"text\" size=\"13\" name=\"mesto\" value=\"".htmlspecialchars($mesto)."\"></td></tr>";
 echo "<tr><td>PSČ <input type=\"text\" size=\"6\" name=\"psc\" value=\"".htmlspecialchars($psc)."\"></td></tr>";
 echo "<tr><td>E-mail <input type=\"text\" size=\"50\" name=\"mail\" value=\"".htmlspecialchars($mail)."\"></td></tr>";
 echo "<tr><td>www <input type=\"text\" size=\"70\" name=\"www\" value=\"".htmlspecialchars($www)."\"></td></tr>";
 echo "<tr><td>Mobil <input type=\"text\" size=\"13\" name=\"mobil\" value=\"".htmlspecialchars($mobil)."\"></td></tr>";
 echo "<tr><td>IČO <input type=\"text\" size=\"8\" name=\"hidden\" value=\"".htmlspecialchars($login)."\"></td></tr>";
 echo "<tr><td>IČO <input type=\"text\" size=\"8\" name=\"ico\" value=\"".htmlspecialchars($ico)."\"></td></tr>";
 echo "<tr><td>DIČ <input type=\"text\" size=\"10\" name=\"dic\" value=\"".htmlspecialchars($dic)."\"</td></tr>";
 echo "<tr><td>IČ DPH <input type=\"text\" size=\"12\" name=\"ic_dph\" value=\"".htmlspecialchars($ic_dph)."\"></td></tr>";
 echo "</table>";                                                     
 echo "<input type=\"submit\" value=\"Zmeniť\">";
 echo "</form>";
} 
 else{
   
   echo 'Nesprávné prihlasovacie údaje';
   } 
?>
Enko
Profil *
fili:
  $_SESSION['id'] = $row['id'];
Nastavuješ až pozdě, udělej to nazačátku, před těma SQL dotazama :-)


Teď na to koukám a máš celé divné a hrozně nesmyslně a složitě udělané. Pravděpodobně ti to nebude fungovat. Co ti vrací $row['id']?
Actimel
Profil
Co takhle to celé smazat a začít to psát od začátku a tentokrát u toho více přemýšlet.

Chyba tady je ta, že při přihlášení uživateli nastavíš $_SESSION['prihlaseny'] = true;, což je blbost, protože když nastavíš uživateli že je přihlášen, tak nezjistíš jaké má id a nemůžeš s jeho účtem pracovat. Namísto toho nastav raději uživatelovu id (nejdřív ji s tím heslem vytáni z db, když heslo bude souhlasit, přidělíš mu id).

Na tuhle chybu si samozřejmě měl přijít dávno sám, protože se snažíš používat $_SESSION['id'], která neexistuje ($id = $_SESSION['id'];).
Amunak
Profil
fili:
U přihlášení nevybírej heslo, ale nějaký unikátní identifikátor uživatele (tedy ID nebo login). Ten si ulož do $_SESSION['id']. To, jestli je uživatel přihlášen (tedy jestli se jméno a heslo shoduje) poznáš podle toho, kolik výsledků ti ten dotaz vrátí. A pak už víš, že je buď $_SESSION['id'] prázdné, a uživatel není přihlášen, nebo tam něco je, a uživatel je přihlášen, a zároveň podle toho jsi schopný poznat, kdo to je. Žádnou jinou session proměnnou tam pak už nepotřebuješ.

Na řádku 16 u přihlášení vyhoď ."" - co to jako má být? Bylo by fajn, kdybys věděl, co do kódu píšeš. Tečka spojuje řetězce, cokoliv uzavřené v "" nebo '' je řetězec. Proč tam připojuješ prázdný řetězec?

Místo escapování uvozovek a apostrofů radši používej apostrofy (') pro uzavírání řetězců - v HTML pak můžeš normálně opužít uvozovky (") a neescapovat je.

SHA1 hash hesla není potřeba escapovat v dotazu do databáze.

Nepoužívej mysql_* funkce, jsou zastaralé. Začni používat buď mysqli_query (a podobné), nebo PDO (kdyby sis troufal na objekty).
special_mj
Profil
nazdar, tento problem, resp. script sa rieši v jednom video tutoriale, na phpacademy: https://phpacademy.org/course/register-login

tak si to pozri, je to tam popísané krok za krokom. Ja čerpám odtiaľ info. Je pravda, že su už stare a napr. používajú tiež mysql_* funkcie, ale tak to sa da nahradiť... Snáď pomôže.
fili
Profil
Enko:
Skúsil som to v PHPMyAdmin
a stále mi to vracia prázdny výsledok. S tým id je to nejaké divné,
nemá to niečo spoločné s tým, že je nastavený ako primárny kľúč?
Ostatným vďaka preskúmam to.
Kódy z tých videí som videl už po nete, ale zdali sa mi dosť komplikované. Nie sú takéto videá aj v sk alebo cz s aj mám problém.
Enko
Profil *
fili:
Pokud ti ten databázový dotaz v PMA vrací prázný výsledek, tak logicky ti nemůže na webu vracet něco jiného než zase prázdný výsledek. Zkus správně definovat ten databázový dotaz ať ti vrací to, cpo potřebuješ a pak ten samý dotaz budeš vkládat z tvé aplikace (jen doplníš správné proměnné). Samozřejmě ti sem můžu napsat hotové řešení, ale takto se to nenaučíš. Je to běh na dlouhou trať a nejlepší je naučit se to sám. Sice to je časově náročné, ale o to intenzivnější je to výuka.
Napiš si nejdřív třeba tužkou na papír celý postup krok za krokem (nejlépe vývojové diagramy, ale pokud neznáš, stačí tak, ať to pochopíš), celý postup a vzájemné závyslosti. Až toto budeš mít, tak jen hledej řešení, jak to v PHP udělat, jen každý jednotlivý krok, přesně jak to jde za sebou. Takto se to poměrně rychle naučíš. Hezky krůček za krůčkem :)
« 1 2 3 »

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: