Autor Zpráva
quatzael
Profil
Script přestane funguvovat, když tam vložím tohle:

$email = db_escape(trim($_POST["email"]));

Přitom proměnnou $_POST["email"] ve scriptu normálně používám a není s ní žádný problém..

Nevíte někdo kde by mohl být problém??
Medvídek
Profil
quatzael:
Zkontroluj si funkci db_escape
Mike8748
Profil
quatzael:
a funkci db_escape mas definovanou?

popis problému "nefunguje" je docela k ničemu. máš zapnuté vypisování chyb? píše ti to něco?
quatzael
Profil
Mike8748:
nemám, myslel jsem, že je předdefinovaná..


Našel jsem ji tady v diskuzi..

function db_escape($str) 
{ 
    return mysql_real_escape_string(@get_magic_quotes_gpc() ? stripslashes($str) : $str);
} 

Já teda nemám vůbec ponětí co ta funkce dělá..
Ale na php.net o tomhle způsobu s get_magic_quotes_gpc() mluví jako o deprecated.
Tori
Profil
quatzael:
To byla asi odtud, ne? Nejčastější potíže s PHP (FAQ))
pozdě, můžete mě smazat.
quatzael
Profil
Tori:
Jo, stejně nefunguje. Script běží, ale z toho řetězce udělá jinej..


Neexistuje něco lepšího a skutečně fungujícího?? Jestli to tedy je opravdu potřebné..
Tori
Profil
quatzael:
Script běží, ale z toho řetězce udělá jinej..
Jakej? Btw jinak ty SQL dotazy spouštíte přes mysql_query nebo něco jiného (mysqli např.)?
Petr__
Profil *
quatzael:
Máte tu funkci definovanou v kódu před tím, než ji použijete?

Jak už zmiňoval [#3] Mike8748: popis problému "nefunguje" je docela k ničemu. máš zapnuté vypisování chyb? píše ti to něco?

Ta funkce slouží k bezpečnému ošetření dat před vložením databáze. Co od ní očekáváte vy? Pro svůj účel je plně dostačující a fungující.
Virtus
Profil
Pokud můžeš tak použí PDO, tam se tenhle problém řeší automaticky interně a ty se nemusíš vůbec o nic starat, jen předáš správně parametry.
quatzael
Profil
Tori:
mysqli
Tori
Profil
quatzael:
mysqli
tak potom je trochu nelogické používat zároveň mysql_* funkce, když pro mysql_ nemáte ani existující spojení k DB, ani nastavenou znakovou sadu (kterou mysql(i)_real_escape_string využívá). Viz MySQLi::real_escape_string
quatzael
Profil
Tori, Petr_:
mám jí definovanou předtím, než jí zpustím, ale ta funkce mi ten řetězec prostě smaže..


Tori:
toho jsem si nevšiml, přepsal jsem to na mysqli, ale stejně to nefunguje..
Petr__
Profil *
quatzael:
přepsal jsem to na mysqli, ale stejně to nefunguje..


A přidal jste také jako první parametr link z připojení mysqli_connect?
function db_escape($str) 
{ 
    return mysqli_real_escape_string($link, @get_magic_quotes_gpc() ? stripslashes($str) : $str);
} 

Lepší by bylo ukázat jak přesně to teď používáte v kódu i při vkládání do databáze.


A tím pádem je tam ten link třeba procpat i do té funkce...

function db_escape($str, $link) 
{ 
    return mysqli_real_escape_string($link, @get_magic_quotes_gpc() ? stripslashes($str) : $str);
} 

A použít :
$email = db_escape(trim($_POST["email"]), $link);
quatzael
Profil
Petr_:

session_start();
include ($_SERVER['DOCUMENT_ROOT'] . '/inc/db-connect.php');

function db_escape($str) 
{ 
 return mysqli_real_escape_string($db_connect, @get_magic_quotes_gpc() ? stripslashes($str) : $str);
} 

if (isset($_POST['email']) && isset($_POST['password']) && isset($_POST['url']))
 {
$email = trim($_POST["email"]);
$password = trim($_POST["password"]);
$url = str_replace("index.php", "", $_POST["url"]);

 $dbcheckuser = "SELECT * FROM users_login WHERE email = '$email' AND password = '$password'";

 $qresult = mysqli_query($db_connect, $dbcheckuser);     
 $userrow = mysqli_fetch_array($qresult);

 if (isset($userrow['id']))
  {
  $_SESSION['user'] = $userrow['id'];
  $_SESSION['user_name'] = $userrow['username'];
  }

  }

 header("Location: $url");
?>



Petr_:

function db_escape($str, $link) 
{ 
    return mysqli_real_escape_string($link, @get_magic_quotes_gpc() ? stripslashes($str) : $str);
}  
A použít : 

$email = db_escape(trim($_POST["email"]), $link);

Tohle je ono!! Teď to funguje, díky moc!!
Virtus
Profil
Petr_:
function db_escape($str, $link)  {      
  return mysqli_real_escape_string($link, @get_magic_quotes_gpc() ? stripslashes($str) : $str); 
}

quatzael:
function db_escape($str)  {   
  return mysqli_real_escape_string($db_connect, @get_magic_quotes_gpc() ? stripslashes($str) : $str); 
}
Chybí vám v parametrech funkce link na připojení.
Petr__
Profil *
quatzael:
session_start();
include ($_SERVER['DOCUMENT_ROOT'] . '/inc/db-connect.php');
 
function db_escape($str, $db_connect) 
{ 
 return mysqli_real_escape_string($db_connect, @get_magic_quotes_gpc() ? stripslashes($str) : $str);
} 
 
if (isset($_POST['email']) && isset($_POST['password']) && isset($_POST['url']))
 {
$email = db_escape(trim($_POST["email"]), $db_connect);
$password = db_escape(trim($_POST["password"]), $db_connect);
$url = str_replace("index.php", "", $_POST["url"]);
 
 $dbcheckuser = "SELECT * FROM users_login WHERE email = '$email' AND password = '$password'";
 
 $qresult = mysqli_query($db_connect, $dbcheckuser);     
 $userrow = mysqli_fetch_array($qresult);
 
 if (isset($userrow['id']))
  {
  $_SESSION['user'] = $userrow['id'];
  $_SESSION['user_name'] = $userrow['username'];
  }
 
  }
 
 header("Location: $url");
?>
quatzael
Profil
Virtus, Petr_:

Už jsem si to opravil, ještě jednou moc dík!

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:

0