| Autor | Zpráva | ||
|---|---|---|---|
| barneby Profil |
#1 · Zasláno: 10. 5. 2013, 20:22:37 · Upravil/a: Moderátor (editace znemožněna) 11. 5. 2013, 10:51:04
Dobrý den,
mám tu takovej csript na registraci uživatelů v mým redakčním systému ale kdiž na csript odešlu data tak my to napíše : Query was empty Zde je ten csript: <?php
ob_start(); // cachujeme vystup
if(isset($_POST['sent'])){ // pokud byl odeslan formular pokracuj timto
$nick=($_POST['nick']);
$jmeno=($_POST['jmeno']);
$prijmeni=($_POST['prijmeni']);
$heslo1=$_POST['heslo1'];
$heslo2=$_POST['heslo2'];
$mail=($_POST['mail']);
$skype=($_POST['skype']);
$web=($_POST['web']);
if($nick=="" or $jmeno=="" or $prijmeni=="" or $heslo1=="" or $mail==""){ // pokud nebylo vyplněno něco z toho, co je povinné, dáme vědět a skript ukončíme
$backlink="../index.php?page=registrace&Alert=1";
}else{ // povinné udaje vyplněny vsechny
require "../db_login.php"; // pripojime se k databazi
$Overeni = $db->query(mysql("SELECT COUNT(*) FROM `uzivatele` WHERE `nick`='$nick' OR `mail`='$mail'"),0) or die (mysql_error());
if($Overeni!=0){ // pokud v db je jiz takove jmeno nebo heslo...
$backlink="../index.php?page=registrace&Alert=2";
}elseif($heslo1 != $heslo2){ // pokud se hesla nerovnají
$backlink="../index.php?page=registrace&Alert=3";
}else{ // hesla se shoduji, vlozime tedy data do databaze
$heslo=md5($heslo1); // zahashujeme heslo
if($web=="http://" or $web==""){ //pokud nezadal web tak dame promennou web Neuveden
$web="Neuveden";
}
$VlozData = $db->query("INSERT INTO uzivatele (nick,jmeno,prijmeni,heslo,mail,skype,web,prava) VALUES ('$nick', '$jmeno', '$prijmeni', '$heslo', '$mail', '$skype', '$web', '0')") or die (mysql_error());
// Vlozim do tabulky hodnoty - prvni je ID - nevyplnim, tvori se samo.
// Jako posledni hodnota je "0", to jsou ty prava uzivatele.
$backlink="../index.php?Alert=4"; // presmerovani s hlaskou ze je vse OK
}
}
}else{
$backlink="../index.php?page=registrace&Alert=5";
}
// pokud pouzijete HEADER LOCATION tak by pred nim nemelo byt zadne platne ECHO
//echo "<a href='index.php'>index</a>";
// samozrejme zde muze byt presmerovani na jinou stranku pomoci
header ("Location: $backlink");
ob_end_flush();
?><h1>Registrace</h1> <form action="./php/registrace.php" method="post"> <input type="hidden" name="sent" value=""/> <input type="text" name="nick" maxlength="32"/> <strong>Už. jméno</strong> <br/> <input type="text" name="jmeno" maxlength="32"/> <strong>jméno</strong> <br/> <input type="text" name="prijmeni" maxlength="32"/> <strong>Přijmení</strong> <br/> <input type="password" name="heslo1" maxlength="32"/> <strong>Heslo</strong> <br/> <input type="password" name="heslo2" maxlength="32"/> <strong>Heslo znovu </strong><br/> <input type="text" name="mail" value="" maxlength="64"/> <strong>Email</strong><br/> <input type="text" name="skype" maxlength="32"/> <strong>skype</strong> <br/> <input type="text" name="web" value="http://" maxlength="128"/> Web<br/> <input type="submit" name="send" value="Registruj"/> </form> Děkuju. |
||
| Davex Profil |
Mám pocit, že jsou na 16. řádku nějak pomotané metoda
$db->query() a funkce mysql().
Třeba tady Duplicate entry '0' for key 1 je stejný skript a 14. řádek vypadá trochu jinak. |
||
| barneby Profil |
#3 · Zasláno: 10. 5. 2013, 20:37:43 · Upravil/a: barneby
Davex:
„Mám pocit, že jsou na 16. řádku nějak pomotané metoda $db->query() a funkce mysql().“ Ano to máš pravdu nevím jak ti udělat jinak. Davex: „Třeba tady Duplicate entry '0' for key 1 je stejný skript a 14. řádek vypadá trochu jinak.“ Ano to taky ale zde je používána zastaralá metodat query |
||
| Davex Profil |
#4 · Zasláno: 10. 5. 2013, 22:51:20
Tak to asi musíš najít náhradu i za zastaralou funkci
mysql_result a správně jí poskládat s metodou $db->query() na 16. řádku. Skript předěláváš z rozšíření MySQL na objektové MySQLi?
|
||
| barneby Profil |
#5 · Zasláno: 11. 5. 2013, 10:36:01
Ano csript je rozšířenej. Zde ti poskytnu soubory db_login.php a soubor sql_connector.class.php
Zde je db_login.php <?php
define('DB_SERVER', 'localhost');
define('DB_USER', 'root');
define('DB_PASS', 'heslo');
define('DB_NAME', 'rs');
define('DB_PREFIX', '');
//------------------------------------------------
require "php/sql_connector.class.php";
$db = new DB(DB_SERVER, DB_USER, DB_PASS, DB_NAME);
$db->query("SET NAMES utf8");
if(!$db->spojeni)
{
exit("Nelze se spojit s databazovym serverem.");
}
if(!$db->spojeno)
{
exit("<p>MySQL server byl pripojen (spravne prihlasovaci udaje),
ale <b>nebyla nalezena databaze</b> se zadanym jmenem.
Patrne chybny udaj.</p>");
}<?php
class DB {
var $spojeni;
var $spojeno;
var $pocitadlo = 0;
var $soucet_casu = 0;
var $debug = false;
var $sql_log = array();
var $posledni = '';
/*
Pripojeni + zajisteni uzavreni spojeni s db po skonceni behu scriptu
*/
function DB($h,$u,$p,$db)
{
$this->host = $h;
$this->db = $db;
$this->user = $u;
$this->pass = $p;
$this->spojeni = @mysql_connect($this->host, $this->user, $this->pass);
$this->spojeno = @mysql_select_db($this->db);
if($_SERVER['REMOTE_ADDR'] == $_SERVER['SERVER_ADDR'])
{
$this->debug = true;
}
else
{
$this->debug = false;
}
register_shutdown_function(array(&$this, 'close'));
}
/*
Nahrada mysql_query().
Pri debug modu pocita dotazy a dobu, za jakou je db zpracuje.
*/
function query($sql)
{
$this->pocitadlo++;
$t1 = $this->getTime();
if(!($result = @mysql_query($sql)) && $this->debug)
{
echo "<p class=\"dberror\">".mysql_error()."<br />".$sql."</p>";
}
$time = $this->getTime() - $t1;
$this->sql_log[] = $time . ' - ' . $sql . '<br />';
$this->soucet_casu += $time;
$this->posledni = 'SQL: '.$sql.' ('.$time.')';
return $result;
}
/*
Slouzi pro ziskani presneho casu pro pocitani, jak dlouho trva dotaz na db.
*/
function getTime()
{
list($usec, $sec) = explode(' ',microtime());
$querytime = ((float)$usec + (float)$sec);
return $querytime;
}
/*
Vypise sql log (prikazy a dobu jejich zpracovani).
*/
function getSqlLog($typ = 1)
{
if($typ == 1)
{
$h = 'Dotazu: '.$this->pocitadlo .' ('.$this->soucet_casu.')<br />';
foreach($this->sql_log AS $sql)
{
$h .= $sql;
}
return $h;
}
else if($typ == 2)
{
$p = array($this->pocitadlo, $this->soucet_casu);
return $p;
}
}
/*
Ukonceni spojeni.
*/
function close()
{
@mysql_close($this->spojeni);
}
}
function save2db($pole,$tabulka,$where = null) // if $where -> update
{
global $db;
$q = '';
$ins_ind = '';
$ins_val = '';
foreach ($pole as $index => $hodnota)
{
$hodnota = "'$hodnota'";
if(!empty($where)) // buduje se UPDATE query (index=hodn,index=hodn,...)
{
$q .= "$index=$hodnota, ";
}
else // buduje se INSERT query
{
$ins_ind .= "$index, ";
$ins_val .= "$hodnota, ";
}
}
if(!empty($where))
{
$q = substr($q,0,-2); // orizneme posledni carku a mezeru
$sql = 'UPDATE '.$tabulka.' SET '.$q.' '.$where;
}
else
{
$ins_ind = substr($ins_ind,0,-2);
$ins_val = substr($ins_val,0,-2);
$sql = "INSERT INTO $tabulka ($ins_ind) VALUES($ins_val)";
}
if($db->query($sql))
{
return true;
}
else
{
return false;
}
} |
||
| Davex Profil |
barneby:
„Budu vděčný ža každí nápad jak nahradit funkci mysql_result za metodu $db->query()“ Funkce mysql_result dělá něco jiného než $db->query() a nejdou navzájem nahrazovat. Stále používáš zastaralé DB rozšíření MySQL, ke kterému přidáváš jen nějakou obálku, takže jsi tam mohl mysql_result klidně nechat.
|
||
|
Časová prodleva: 13 let
|
|||
0