Autor | Zpráva | ||
---|---|---|---|
Wayd Profil |
#1 · Zasláno: 1. 10. 2012, 10:20:17
zdravím vás tu...
Mám menší problém s převodem mysql do postgre. Přiznám s potgre se setkávám pořádně poprvé, takže opravdu nemám žádné tušení ... volání mysql + login form <?php error_reporting(0); //hlášení chyb php session_start(); if($_GET[action]=="logout"){ session_destroy(); header("Location:index.php"); exit; } include("connect.php"); if($_GET[action]==login){ if(!empty($_POST[login]) AND !empty($_POST[pwd])){ $dotaz=mysql_query("SELECT `id`,`user`, `level` FROM `db_users` WHERE `user` = '$_POST[login]' AND `pass` = '$_POST[pwd]' Limit 1"); $data=mysql_fetch_assoc($dotaz); if(mysql_num_rows($dotaz)==1){ $_SESSION[log]=true; $_SESSION[user_id]=$data[id]; $_SESSION[user]=$data[user]; $_SESSION[level]=$data[level]; header("Location: index.php"); die(); } else{ $error_log=1; } }else{ if(empty($_POST[login]) OR empty($_POST[pwd])){ $error_log2=1; } } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xml:lang="cs" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <link rel="stylesheet" type="text/css" href="style.css" /> <link rel="stylesheet" href="jquery-ui-1.8.16.custom.css"> <script type="text/javascript" src='jquery-1.7.1.js'></script> <script type="text/javascript" src='jquery-1.7.1.min.js'></script> <title>--</title> </head> <body> <!-- script na enable/disable tlačítka stahování--> <script type="text/javascript"> $(document).ready(function(){ $("#check").click(function(){ if ($('#check').is(':checked')) { $('#stahuj').removeAttr('disabled'); } else { $('#stahuj').attr('disabled', true); } }); }); </script> <div class="ground"> <div class="logo"><h1></h1> </div><!-- /logo --> <?php if($_SESSION[log]==false){ ?> <form action="?action=login" method="post"> <table> <tr><td><b>Login:</b></td><td><input type="text" name="login" size="26" /></td></tr> <tr><td><b>Password:</b> </td><td><input type="password" name="pwd" size="26" /></td></tr> </table> <br> <?php if($error_log==1) echo "Špatně zadané přihlašovací údaje";?> <?php if($error_log2==1) echo "Neúplné přihlašovací údaje"; ?> <br> <br> <input type="submit" name="Přihlásit" value="Přihlásit" style="height: 30px; width: 100px ; background: #D00000 ; color:white" /><br /> </form> </center> <?php } else{ ?> <div class="menu"> <ul> <?php if($_SESSION[level]==admin){ ?> <li><a href="index.php?p=main&action=add&"><font color="white">Přidání uživatele</font></a></li> <li><a href="index.php?p=main&action=sdeleni&"><font color="white">Editace sdělení</font></a></li> <? } ?> <li><a href=""><font color="white">Login</font></a></li> <li><a href="index.php?action=logout"><font color="white">Odhlášení</font></a></li> </ul> </div> <!-- menu--> <br /> <?php if($_GET["p"]==""){$_GET['p']="main";} if(isset($_GET["p"])) { //budeme inkludovat stranku if(file_exists("./".$_GET["p"].".php") && //zjistime, jestli stranka existuje (zamezeni RFI) (substr_count($_GET["p"], "../") == 0) && //omezime vkladani podrazenych slozek (linux) (substr_count($_GET["p"], "/") == 0) && //Omezení includování podrazených adresáru (substr_count($_GET["p"], "..\\") == 0)){ //to same pro win include_once "./$_GET[p].php"; //pokud jsme vsim prosli, inkludujeme } } } ?> <br><br><br><div class="paticka">Copyright © 2012 <a href=""></a> | e-mail: <a href="mailto:"></a> </div> </div><!-- /paticka --> </body> </html> tabulka id serial NOT NULL, "user" character varying(100), pass character varying(100), level character varying(100), stazeni time without time zone, Díky za každou pomoc a radu |
||
Kajman Profil |
#2 · Zasláno: 1. 10. 2012, 11:19:11
Nevolejte mysql funkce, ale jejich obdoby pro zvolenou databázi...
http://cz.php.net/manual/en/book.pgsql.php Nezapomeňte příslušně upravit i connect.php - případně si udělat jiný soubor, prokud jinde mysql ještě budete používat. Také si doplňte ošetření proti sql injection. |
||
Wayd Profil |
<?php error_reporting(0); //hlášení chyb php session_start(); if($_GET[action]=="logout"){ session_destroy(); header("Location:index.php"); exit; } include("connect.php"); if($_GET[action]==login){ if(!empty($_POST[login]) AND !empty($_POST[pwd])){ $dotaz=pg_query("SELECT id, user, level FROM db_users_ete WHERE user = $_POST[login] AND pass = $_POST[pwd] Limit 1"); if (!$dotaz) echo "err in pg_query"; ///zde zkončím, resp přihlášení neproběhne vůbec v pořádku . Předpokládám chybu v řádku výše? $data = pg_fetch_assoc($dotaz); if (pg_num_rows($data) == 1){ $_SESSION[log]=true; $_SESSION[user_id]=$data[id]; $_SESSION[user]=$data[user]; $_SESSION[level]=$data[level]; header("Location: index.php"); die(); } else{$error_log=1;} } else{ if(empty($_POST[login]) OR empty($_POST[pwd])){ $error_log2=1; } } } ?> connect.php <?php $dbconn = pg_connect("host=IP dbname=(name) user=(user) password=(pass)") or die('Could not connect: ' . pg_last_error()); ?> |
||
shaggy Profil |
#4 · Zasláno: 1. 10. 2012, 12:41:00
Wayd:
Gratulujem k úspešnej zmene mysql funkcií za pgsql funkcie. Som rád, že tento web opäť raz pomohol (ale ten kód si sem nemusel dávať... alebo si sa chcel ešte niečo opýtať?). |
||
Wayd Profil |
#5 · Zasláno: 1. 10. 2012, 13:02:17
Jen bych rád ještě potřeboval "nakopnout" ..
$dotaz=pg_query("SELECT id, user, level FROM db_users_ete WHERE user = $_POST[login] AND pass = $_POST[pwd] Limit 1"); if (!$dotaz) echo "err in pg_query"; a konečná je :"err in pg_query". Je tam něco špatně v dotazu pg_query? |
||
Kajman Profil |
#6 · Zasláno: 1. 10. 2012, 13:18:00
Zkuste
$dotaz=pg_query_params('SELECT id, "user", level FROM db_users_ete WHERE "user" = $1 AND pass = $2 LIMIT 1', array($_POST['login'],$_POST['pwd'])); if (!$dotaz) echo "err in pg_query - ", pg_last_error() ; |
||
Wayd Profil |
#7 · Zasláno: 1. 10. 2012, 13:44:44 · Upravil/a: Moderátor (editace znemožněna) 2. 10. 2012, 23:03:34
výborné :).
Ovšem nyní jsem zůstal stát na zbytku přihlašování.. na dvou místech jsou ECHO, která zobrazila :" Resource id #4Array " viz. if($_GET[action]==login){ if(!empty($_POST[login]) AND !empty($_POST[pwd])){ $dotaz=pg_query_params('SELECT id, "user", level FROM db_users_ete WHERE "user" = $1 AND pass = $2 LIMIT 1', array($_POST['login'],$_POST['pwd'])); if (!$dotaz) echo "err in pg_query - ", pg_last_error() ; echo "$dotaz"; $data = pg_fetch_assoc($dotaz); echo "$data"; if (pg_num_rows($data) == 1){ $_SESSION[log]=true; $_SESSION[user_id]=$data[id]; $_SESSION[user]=$data[user]; $_SESSION[level]=$data[level]; header("Location: index.php"); die(); } else{$error_log=1;} } else{ if(empty($_POST[login]) OR empty($_POST[pwd])){ $error_log2=1; } } } zde je problém, zacyklil jsem se na tom, že nejsem vpuštěn jelikož nejsem vyhodnocen ani jako uživatel ani jako admin.. |
||
Kajman Profil |
#8 · Zasláno: 1. 10. 2012, 21:41:42
Vypisovat si $dotaz je nesmysl. Pokud si chcete vypsat $data, použijte např.
print_r($data); Dále jako parametr pro pg_num_rows patří proměnná $dotaz, jak to bylo v původní mysql verzi. |
||
Wayd Profil |
#9 · Zasláno: 2. 10. 2012, 08:54:55 · Upravil/a: Wayd
Kajman:
Tak tohoto jsem si nevšiml..:D. děkuji Jinak poslední obsáhlejší dotaz.. Opravil jsem pg_query v souboru "admin.php". Ovšem předpokládám, že takto to není správně? <?php session_start(); include("connect.php"); function newid($db){ $dotaz=SELECT MAX(id) as `maxid` FROM `$db`; $data=pg_fetch_assoc($dotaz); return $data[maxid]+1; } if($_SESSION[level]==admin){ // Přidání nového uživatele if($_GET[action]==add && $_GET[sekce]==user){ pg_query("INSERT INTO `db_users` (`id`,`user`,`pass`,`level`) VALUES ('".newid(db_users)."','$_POST[user]','$_POST[pass]','$_POST[level]')") or die(pg_error()); } // Úprava stávajícího uživatele if($_GET[action]==edit && $_GET[sekce]==user){ pg_query("UPDATE `db_users` SET `user` = '$_POST[user]', `pass` = '$_POST[pass]' , `level` = '$_POST[level]' WHERE `id` = '$_GET[id]' LIMIT 1") or die(pg_error()); } // Smazani uživatele if($_GET[action]==del && $_GET[sekce]==user){ pg_query("DELETE FROM `db_users` WHERE `id` = '$_GET[id]' LIMIT 1") or die(pg_error()); } //editace_sdeleni if($_GET[action]==sdeleni ){ pg_query("UPDATE `db_sdeleni` SET `sdeleni` = '$_POST[sdeleni]' WHERE `id` = '1' LIMIT 1") or die(pg_error()); } header ("Location: ".$_SERVER["HTTP_REFERER"]); exit; } ?> |
||
Kajman Profil |
#10 · Zasláno: 2. 10. 2012, 22:46:01
|
||
Wayd Profil |
#11 · Zasláno: 3. 10. 2012, 11:57:37
všem děkuji za radu a váš čas:).
Klobou před Vámi. |
||
Časová prodleva: 12 let
|
0