Autor | Zpráva | ||
---|---|---|---|
nyllo Profil |
#1 · Zasláno: 8. 10. 2013, 16:04:22 · Upravil/a: nyllo
Zdravím mohl by mi prosím někdo zkontrolovat a opravit tento script jsem nováček.
index.php <?php require_once('autentizace.php'); //Velice důležité (kdyby to tu nebylo, mohl by sem nepřihlášený uživatel) ?> <h1>Stránka, kam se dostanou jen přihlášení uživatelé</h1> <p>Vítej <b><?echo $_SESSION['NICK']?></b></p> A tady dále pokračuje stránka.... <a href="odhlasit.php">Odhlásit</a> registrace.php <?php session_start(); //Pokud uživatel nějaké políčko nevyplnil, sdělíme mu to if( isset($_SESSION['ERROR_ZPRAVA']) && is_array($_SESSION['ERROR_ZPRAVA']) && count($_SESSION['ERROR_ZPRAVA']) >0 ) { echo '<ul type="I">'; foreach($_SESSION['ERROR_ZPRAVA'] as $zpr) { echo '<li>',$zpr,'</li>'; } echo '</ul>'; unset($_SESSION['ERROR_ZPRAVA']); } ?> <form action="zregistrace.php" method="post"> <table> <tr> <td>Nick: </td><td><input type="text" name="nick"></td> </tr> <tr> <td>Heslo: </td><td><input type="password" name="heslo"></td> </tr> <tr> <td>Heslo znovu: </td><td><input type="password" name="zheslo"></td> </tr> <tr> <td> </td><td align="right"><input type="submit" name="Submit" value="Registrovat"></td> </tr> </table> </form> zregistrace.php <?php //Nastartování session session_start(); //Vložení config.php require_once('config.php'); $error_zprava = array(); //Validace pro errory $error = false; //Připojení k mysql serveru $link = mysql_connect(SQL_HOST, SQL_UZIVATEL, SQL_HESLO); if(!$link) { die('Nelze se připojit: ' . mysql_error()); } //Zvolíme databázi $db = mysql_select_db(SQL_DATABAZE); if(!$db) { die("Databáze nenalezena"); } //Zabráníme sql injekci function clean($str) { $str = @trim($str); if(get_magic_quotes_gpc()) { $str = stripslashes($str); } return mysql_real_escape_string($str); } //Vyčistíme přijaté hodnoty $nick = htmlspecialchars(clean($_POST['nick'])); $heslo = htmlspecialchars(clean($_POST['heslo'])); $zheslo = clean($_POST['zheslo']); $ip = $_SERVER["REMOTE_ADDR"]; //Kontrolujeme, zda uživatel vyplnil všechna pole //Kontrola nicku if($nick == '') { $error_zprava[] = 'Vyplň nick!'; $error = true; } //Kontrola hesla if($heslo == '') { $error_zprava[] = 'Vyplň heslo!'; $error = true; } //Kontrola zopakovaného hesla if($zheslo == '') { $error_zprava[] = 'Vyplň kontrolu hesla!'; $error = true; } //Porovnání zadatných hesel if( strcmp($heslo, $zheslo) != 0 ) { $error_zprava[] = 'Hesla nesouhlasí!'; $error = true; } //Zkontrolujeme, zda již někdo pod tímto nickem není zaregistrován if($nick != '') { $dotaz = "SELECT * FROM uzivatele WHERE nick='$nick'"; $pdotaz = mysql_query($dotaz); if($pdotaz) { if(mysql_num_rows($pdotaz) > 0) { $error_zprava[] = 'Nick je již zabrán!'; $error = true; } @mysql_free_result($pdotaz); } else { die("Selhání dotazu č1"); } } //Pokud je chyba v políčkách, vrátíme uživatele zpět a sdělíme co neměl vyplněno if($error) { $_SESSION['ERROR_ZPRAVA'] = $error_zprava; session_write_close(); header("location: registrace.php"); exit(); } //Vytvoříme sql dotaz $dotaz = "INSERT INTO uzivatele(nick, heslo, ip) VALUES('$nick','".md5($_POST['heslo'])."','$ip')"; mysql_query("SET character_set_client=utf8"); mysql_query("SET character_set_connection=utf8"); mysql_query("SET character_set_results=utf8"); //Provedeme sql dotaz $pdotaz = @mysql_query($dotaz); //Při úspěšné registraci hodíme uživatele na prihlaseni.php?z=registrace-uspesna if($pdotaz) { header("location: prihlaseni.php?z=registrace-uspesna"); exit(); }else { die("Selhání dotazu č2"); } ?> prihlaseni.php <?php //Pokud uživatel nějaké políčko nevyplnil, sdělíme mu to if( isset($_SESSION['ERROR_ZPRAVA']) && is_array($_SESSION['ERROR_ZPRAVA']) && count($_SESSION['ERROR_ZPRAVA']) >0 ) { echo '<ul type="I">'; foreach($_SESSION['ERROR_ZPRAVA'] as $zpr) { echo '<li>',$zpr,'</li>'; } echo '</ul>'; unset($_SESSION['ERROR_ZPRAVA']); } //Registrace úspěšná a ostatní $zpr = array('registrace-uspesna' => 'Byl/a jsi úspěšně zaregisrován/a. Nyní se můžeš pihlásit.', 'prihlaseni-selhalo' => 'Přihlášení selhalo. Prosím, zkontroluj zadané údaje.', 'automaticke-odhlaseni' => 'Byl/a jsi neaktivní déle jak 30 minut. Byl/a jsi automaticky odhlášen/a.',); //Jestliže jseme dostali "z" tak řekneme obsah arraye if($_GET['z']){ echo "".$zpr[$_GET['z']].""; }else{ echo ""; } ?> <form action="zprihlaseni.php" method="post"> <table> <tr> <td>Nick: </td><td><input type="text" name="nick"></td> </tr> <tr> <td>Heslo: </td><td><input type="password" name="heslo"></td> </tr> <tr> <td> </td><td align="right"><input type="submit" name="Submit" value="Přihlásit se"></td> </tr> </table> </form> zprihlaseni.php <?php //Nastartování session session_start(); //Vložení config.php require_once('config.php'); $error_zprava = array(); //Validace pro errory $error = false; //Připojení k mysql serveru $link = mysql_connect(SQL_HOST, SQL_UZIVATEL, SQL_HESLO); if(!$link) { die('Nelze se připojit: ' . mysql_error()); } //Zvolíme databázi $db = mysql_select_db(SQL_DATABAZE); if(!$db) { die("Databáze nenalezena"); } //Zabráníme sql injekci function clean($str) { $str = @trim($str); if(get_magic_quotes_gpc()) { $str = stripslashes($str); } return mysql_real_escape_string($str); } //Vyčistíme přijaté hodnoty $nick = clean($_POST['nick']); $heslo = clean($_POST['heslo']); //Kontrolujeme, zda uživatel vyplnil všechna pole //Kontrola nicku if($nick == '') { $error_zprava[] = 'Vlož nick!'; $error = true; } //Kontrola hesla if($heslo == '') { $error_zprava[] = 'Vlož heslo!'; $error = true; } //Pokud je chyba v políčkách, vrátíme uživatele zpět a sdělíme co neměl vyplněno if($error) { $_SESSION['ERROR_ZPRAVA'] = $error_zprava; session_write_close(); header("location: prihlaseni.php?z=prihlaseni-selhalo"); exit(); } //Vytvoříme sql dotaz $dotaz="SELECT * FROM uzivatele WHERE nick='$nick' AND heslo='".md5($_POST['heslo'])."'"; mysql_query("SET character_set_client=utf8"); mysql_query("SET character_set_connection=utf8"); mysql_query("SET character_set_results=utf8"); //Provedeme sql dotaz $pdotaz=mysql_query($dotaz); //Pokud dosud bylo vše úspěšné, zapíšeme údaje do session if($pdotaz) { if(mysql_num_rows($pdotaz) == 1) { session_regenerate_id(); $uzivatel = mysql_fetch_assoc($pdotaz); //Zapisování údajů do session $_SESSION['ID'] = $uzivatel['id']; $_SESSION['NICK'] = $uzivatel['nick']; $_SESSION['HESLO'] = $uzivatel['heslo']; session_write_close(); header("location: ".WEB_START.""); exit(); }else { //Vše bylo neůspěšné. Přihlášení se nezdařilo header("location: prihlaseni.php?z=prihlaseni-selhalo"); exit(); } }else { die("Selhání dotazu"); } ?> authentizace.php <?php //Nastartování session session_start(); //Jestliže není zadaný v session id hodí vás to na prihlaseni.php if(!isset($_SESSION['ID']) || (trim($_SESSION['ID']) == '')) { header("location: prihlaseni.php?z=automaticke-odhlaseni"); exit(); } ?> odhlasit.php <?php //Nastartování session session_start(); //Zničení (unsetnutí) všech dat co jsme uložili do session unset($_SESSION['ID']); unset($_SESSION['NICK']); unset($_SESSION['HESLO']); echo "Byl/a jsi úspěšně odhlášen/a"; ?> <a href="prihlaseni.php">příhlášení</a> | | | <a href="">hlavní stránka</a> Hosting - Wedos PHP v5.3 |
||
shaggy Profil |
#2 · Zasláno: 8. 10. 2013, 16:32:18
Ahoj mohol by si napísať čo ti nefunguje keď už chceš poradiť som pokročilý.
(však sa to zle číta bez interpunkcie) Ale aby som nebol taký zlý, tak jedna chyba pre začiatok, v index.php máš: require_once('autentizace.php'); |
||
nyllo Profil |
#3 · Zasláno: 8. 10. 2013, 16:46:39
zprihlaseni.php - tyto chyby
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /data/web/virtuals/53982/virtual/www/subdom/p11/zprihlaseni.php:2) in /data/web/virtuals/53982/virtual/www/subdom/p11/zprihlaseni.php on line 4 Warning: session_regenerate_id() [function.session-regenerate-id]: Cannot regenerate session id - headers already sent in /data/web/virtuals/53982/virtual/www/subdom/p11/zprihlaseni.php on line 60 Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/53982/virtual/www/subdom/p11/zprihlaseni.php:2) in /data/web/virtuals/53982/virtual/www/subdom/p11/zprihlaseni.php on line 67 registrace.php - tyto chyby Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /data/web/virtuals/53982/virtual/www/subdom/p11/registrace.php:2) in /data/web/virtuals/53982/virtual/www/subdom/p11/registrace.php on line 3 registrace.php - tyto chyby Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /data/web/virtuals/53982/virtual/www/subdom/p11/zregistrace.php:2) in /data/web/virtuals/53982/virtual/www/subdom/p11/zregistrace.php on line 4 Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/53982/virtual/www/subdom/p11/zregistrace.php:2) in /data/web/virtuals/53982/virtual/www/subdom/p11/zregistrace.php on line 73 index.php - tyto chyby Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /data/web/virtuals/53982/virtual/www/subdom/p11/index.php:1) in /data/web/virtuals/53982/virtual/www/subdom/p11/autentizace.php on line 4 přepsal jsem se v názvu... autentizace adresář je pojmenován správně |
||
Rfilip Profil |
Skoro ve vsech souborech je BOM.
|
||
nyllo Profil |
#5 · Zasláno: 8. 10. 2013, 16:51:53
Rfilip:
trochu jsem nepochopil možno rozvinout? |
||
Amunak Profil |
|||
nyllo Profil |
píšu v Adobe Dreamweaver 6 ten BOM nevytváří.
|
||
okolojsoucí Profil * |
#8 · Zasláno: 8. 10. 2013, 17:42:13
A to máš podložené jak? Mohu poprosit relevantní odkaz kde se to píše? (Nejlépe na Adobe). Navíc bych řekl že nelegální software se zde netoleruje! (Nevěřím tomu že by si někdo koupil Adobe Dreamweaver 6 za 10 tis. když existuje IDE zdarma - např. NetBeans, ...)
|
||
nyllo Profil |
#9 · Zasláno: 8. 10. 2013, 17:49:51
původ je zde vedlejší pouze jsem se zmínil.
i kdybych to pral přes google který to umožňuje mám menší pravděpodobnost že mi vznikne BOM než u PSPadu |
||
okolojsoucí Profil * |
#10 · Zasláno: 8. 10. 2013, 17:59:01
Tak že v 99% případu se jedná o BOM viz Forum Nette, Zdejší fórum #1, #2, #3, atd.
Neznamená když si myslíš že tam BOM není tak tam opravdu není! Tak že pokud chceš aby ti někdo kouknul na tvůj BOM tak vlož někam soubory na internet ke stažení, nebo použij hexadeditor. |
||
nyllo Profil |
#11 · Zasláno: 8. 10. 2013, 17:59:02 · Upravil/a: nyllo
problém je se session na hostingu...
to samá se stalo i při kódování cp1250 a iso-8859-2 |
||
Amunak Profil |
#12 · Zasláno: 8. 10. 2013, 19:18:26
nyllo:
„píšu v Adobe Dreamweaver 6“ Tak to radši piš v něčem, kde máš nad výstupem úplnou kontrolu. A znova si přečti co jsem posílal v [#6] - je to tam popsané. Jedna z těch chyb to prostě být musí. Nemáš třeba na výstupu ještě nějakou chybovou hlášku? Neincluduješ náhodou tyhle soubory ještě do něčeho? Skutečně nemáš před <?php nějaký bálý znak nebo escape sekvenci? Nepoužívej ?> pokud to skutečně nepotřebuješ. |
||
nyllo Profil |
#13 · Zasláno: 8. 10. 2013, 19:30:34 · Upravil/a: nyllo
includuji na první řídek head.php a ten poté do každé další stránky.
Amunak: jaký editor doporučuješ ne PSPad |
||
han5vk Profil |
A čo je v head.php? Skús si tú session_start() dať pred ten include. Editor napríklad Notepad++, prečo nechceš PSPad?
|
||
nyllo Profil |
#15 · Zasláno: 8. 10. 2013, 20:01:31 · Upravil/a: nyllo
head.php je hlavička stránky.
tak jsem stáhl login script z netu a nainstaloval jsem ho na Endoru a na Wedos.. Endora > vše běží bez jakých koliv problémů Wedos > Warning: session_start() [function.session-start]
Trochu zvláštní |
||
okolojsoucí Profil * |
#16 · Zasláno: 8. 10. 2013, 20:19:03
Ani ne. Teď jsem zkusil na Wedos webhostingu spustit následující script, a bez problému.
<?php session_start(); $_SESSION['test'] = time(); echo $_SESSION['test']; ?> |
||
Jan Tvrdík Profil |
#17 · Zasláno: 8. 10. 2013, 20:21:29
nyllo:
„Trochu zvláštní“ Servery se pravděpodobně lepší konfigurací PHP. Zkus output detector od Davida Grudla. |
||
nyllo Profil |
#18 · Zasláno: 8. 10. 2013, 20:48:20
index.php
Output started here: #0 /data/web/virtuals/53982/virtual/www/subdom/test/index.php(11): {closure}(' ?Warni...', 3) #1 /data/web/virtuals/53982/virtual/www/subdom/test/index.php(11): require_once() #2 {main} Warning: require_once(autentizace.php) [function.require-once]: failed to open stream: No such file or directory in /data/web/virtuals/53982/virtual/www/subdom/test/index.php on line 11 Fatal error: require_once() [function.require]: Failed opening required 'autentizace.php' (include_path='.:/data/web/virtuals/53982/virtual') in /data/web/virtuals/53982/virtual/www/subdom/test/index.php on line 11 <?php ob_start(function($s, $flag) { if ($flag & PHP_OUTPUT_HANDLER_START) { $e = new \Exception; $s = nl2br("Output started here:\n{$e->getTraceAsString()}\n\n") . $s; } return $s; }, 2); require_once('autentizace.php'); //Velice důležité (kdyby to tu nebylo, mohl by sem nepřihlášený uživatel) ?> <h1>Stránka, kam se dostanou jen přihlášení uživatelé</h1> <p>Vítej <b><?echo $_SESSION['NICK']?></b></p> A tady dále pokračuje stránka.... <a href="odhlasit.php">Odhlásit</a> |
||
Rfilip Profil |
#19 · Zasláno: 8. 10. 2013, 21:19:36
|
||
Adam16 Profil |
#20 · Zasláno: 8. 10. 2013, 22:21:34
chlapče ty si komplikuješ život... to kde si splašil tieto skripty ??? keď aspoň kus vieš PHP a maš rozum tak si to uprav tak aby to bolo čo najjednoduchšie !!
|
||
Amunak Profil |
#21 · Zasláno: 9. 10. 2013, 09:12:50
nyllo:
Notepad++ „head.php je hlavička stránky.“ To bude asi to, co dělá problém. |
||
nyllo Profil |
#22 · Zasláno: 9. 10. 2013, 13:36:17
Rfilip:
jak už jsem výše udal upsal jsem se v názvu jinak názvy odpovídají. Adam16 Pokud víš o lepším scriptu pro login tak budu rád. V psaní php jsem celkem lama a teprve se učím. |
||
Adam16 Profil |
#23 · Zasláno: 9. 10. 2013, 23:02:29
nyllo:
jasne že viem... ty píšeš že si lama tak potom prečo používaš tak komplikované skripty ??? |
||
nyllo Profil |
#24 · Zasláno: 9. 10. 2013, 23:54:43
Adam16:
tak poskytni návod prosím. |
||
Amunak Profil |
|||
Časová prodleva: 11 let
|
0