| Autor | Zpráva | ||
|---|---|---|---|
| quatzael Profil |
#1 · Zasláno: 17. 3. 2013, 10:46:10
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 |
#2 · Zasláno: 17. 3. 2013, 10:50:18
quatzael:
Zkontroluj si funkci db_escape |
||
| Mike8748 Profil |
#3 · Zasláno: 17. 3. 2013, 10:51:07
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 Profil |
#6 · Zasláno: 17. 3. 2013, 11:36:39 · Upravil/a: quatzael
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 * |
#8 · Zasláno: 17. 3. 2013, 12:09:35
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 |
#9 · Zasláno: 17. 3. 2013, 12:12:29
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 |
#10 · Zasláno: 17. 3. 2013, 12:18:08
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 |
#12 · Zasláno: 17. 3. 2013, 12:24:28 · Upravil/a: quatzael
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 * |
#13 · Zasláno: 17. 3. 2013, 12:59:58 · Upravil/a: Petr__
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 |
#15 · Zasláno: 17. 3. 2013, 13:24:27
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);
} |
||
| Petr__ Profil * |
#16 · Zasláno: 17. 3. 2013, 13:26:29
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 |
#17 · Zasláno: 17. 3. 2013, 13:31:52
Virtus, Petr_:
Už jsem si to opravil, ještě jednou moc dík! |
||
|
Časová prodleva: 13 let
|
|||
0