no najskôr musíš nájisť uživatela poďla kombinácie nick a heslo. tak
získaš ID, ktoré môžeš používať zo session
$sql=' select uzivatel_id as id from uzivatel where uzivatel_nick='".$_POST["nick"]."' and uzivatel_heslo='".$_POST["heslo"]."';
$sql=mysql_query($sql);
if(mysql_num_rows($sql)== NULL) echo "nespravne meno alebo heslo"; // uživateľ sa nenašiel
else //uživatel sa našiel, a prihlásil. pridanie do session
{
$sql=mysql_fetch_assoc($sql);
$_SESSION["id"]=$sql["id"];
}
pozor nie je to vôbec ošetrený kód!!! iba ukážka ako to funguje
<? require("udrzeni.php"); ?>
<!DOCTYPE HTML PUBLIC "-W3CDTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="generator" content="PSPad editor, www.pspad.com">
<link rel="stylesheet" href="css/logadmin.css" type="text/css">
<title>Přihlášení - Admin</title>
</head>
<body>
<a href="index.php">Vrať se zpět</a>
<br><br><br><br><br><br>
<h1>Administrace - Haus-Moto</h1>
<br><br><br>
<center>
<form action="menuadmin.php" method="POST">
<table>
<tr><td>Login:</td><td><input type="text"
name="login" style="width:150px"></td></tr>
<tr><td>Heslo:</td><td><input type="password"
name="heslo" style="width:150px"></td></tr>
<tr><td><input type="submit"
value="Přihlásit"></td></tr>
</table>
</form>
</center>
<?php
require("connect.php");
if($_POST and (empty($_POST["login"]) or empty($_POST["heslo"]))){
echo ("Nevyplnil si Login nebo Heslo.");
}
else{
if(isset($_POST["login"]) and (isset($_POST["heslo"]))){
$login = $_POST["login"];
$heslo = $_POST["heslo"];
$dotaz = "SELECT * FROM admin where login=\"$login\" and heslo =\"$heslo\"";
$vysledek = mysql_query($dotaz) or die ("Vyplnil si špatně login nebo
heslo");
$loguser=mysql_fetch_array($vysledek);
if(mysql_num_rows($vysledek)==1){
vidíš, nám zase nadávali keď sme to písali priamo. Že aby sa to
lahšie "debuggovalo" keď si pred spracovaním možes nechat echovať $sql tak to tak mám zafixované.
už sa ale snažím prejisť na PDO a tam to nepoužívam.
tu injection si myslel ako že som to napísal tak do tej ukázky, či ako
?
Použil jsi stejnou proměnnou pro parametr funkce a pro výsledek. To se
prostě nedělá. Kromě toho výsledkem funkce mysql_query($sql)
není SQL dotaz, proto neexistuje důvod, proč by se měl ukládat do
proměnné s názvem $sql. To jméno proměnné je prostě matoucí
a proto je ten zápis špatně.
skript moze byt aj medzi html tagmi, ale suhlasim s tym, ze session_start(),
ako aj header() patri na zaciatok scriptu, pred <html> tagom
cize nejako takto:
V každém skriptu mám jen jedno <?php na 1. řádku a nikde
jinde. Ukončení ?> do skriptů nedávám vůbec. Všechny
výstupy dělám příkazem echo a to až tehdy, když mám
veškerá výstupní data připravena. Je to i nejrychlejší.
Vždycky se mi šablony nechtějí dělat, raději dělám výstup
objektově. Když už, tak udělám pro jeden projekt jen jednu šablonu. Víc
jich obvykle ani není třeba dělat.
V reálu to vypadá ještě trochu jinak, ale to je vedlejší. Dospěl jsem
k tomu po vyzkoušení spousty jiných variant. Heredoc se mi prostě líbí a
používám ho i pro zápis víceřádkových SQL dotazů. Pro HTML má
nespornou výhodu v tom, že mohu ve výstupu používat apostrofy a uvozovky
bez omezení a bez nějakého escapování.
Jedno to je, ale první znak výstupu můžeš odeslat až po odeslání
session a všech ostatních hlaviček HTTP. Jinak se s tím nedomluvíš. Proto
je jednodušší dát celý výstup jako samostatný modul, který se zavolá
úplně na konci skriptu.
problém jsem vyřešil. Měl jsem špatně zapsaný SESSION. Nyní vše
funguje jak má.
Děkuji všem za pomoc.
Přesto mám ještě jeden dotaz... Pokud do databáze vložím fotky, když je pak v dalším souboru chci
vypsat a udělat aby byl náhled fotografie? Jak na to?
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.