|
|
|
| Здравствуйте,
почемуто, когда я выкладываю сайт в интернет возникает ошибка Warning: crypt() expects parameter 1 to be string. Но на локальном сервере все нормально. Ошибка вылетает на странице корзинки, когда я в нее что либо добавляю и когда я войду как зарегестрированный пользователь
Пишет, что она находится вот тут:
<?php
$_SESSION['user'] = $r['name'];
$_SESSION['password'] = $r['pass'];
$_SESSION['sid'] =md5(crypt($r['name'],$r['pass'])); //Вот тут
?>
|
подскажите пожалуйста, почему она вылетает(ошибка), и как от нее избавиться! Спасибо большое! | |
|
|
|
|
|
|
|
для: Dmitry1988
(12.03.2010 в 12:08)
| | А переменные $r['name'] и соответственно $r['pass'], они часом не пустые? может, в них какое значение не передалось? Например, если передавалось через POST, а на локальном серваке register_globals = on, то там и работать все могло. А у хостеров register_globals всегда off. | |
|
|
|
|
|
|
|
для: DJ Paltus
(12.03.2010 в 13:22)
| | нет нет, все нормально. Когда я вхожу под своим именем и паролем, то все работает отлично, но как только я перейду на страницу корзинки и добавлю в нее товар то выскакивает ошибка. Может это как то связанно с тем, что на эту страницу передается сессионный массив для корзинки?(хотя не должно быть) | |
|
|
|
|
|
|
|
для: Dmitry1988
(12.03.2010 в 13:54)
| | попробуй повыводи var_dump для этой r, непосредссно перед crypt(). Чего писать будет? | |
|
|
|
|
|
|
|
для: DJ Paltus
(12.03.2010 в 14:11)
| | Вывел для всех переменных все возвращает нормально:
<?php
var_dump($_SESSION['user']);
var_dump($_SESSION['password']);
var_dump($_SESSION['sid']);
Возвращает:
string(8) "burobd11"
string(32) "9e59231bb4bbc18e00ca1b1939d694da"
string(32) "9ee57ddbbca04849ec3f604c6ab23893"
?>
|
но я тут еще одну ошибку нашел, когда я пишу запрос на странице корзинки о заполнение данных из таблицы зарегестрированных пользователей:
<?php
$user = print("SELECT * FROM guest WHERE name='".$_SESSION['user']."' AND pass='".$_SESSION['password']."' AND status=1");
$r_user = mysql_fetch_assoc($user);
?>
|
то он мне выдает ошибку, Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in, и вроде как сессия прерывается,в окне где написанно "Здравствуйте такойто" опять же выводится форма для входа, но в запросе если его выписать остается пароль...Сейчас буду пытаться исправить ошибку с mysql | |
|
|
|
|
|
|
|
для: Dmitry1988
(12.03.2010 в 15:09)
| | помогите пожалуйста разобраться с этой ошибкой, никак понять не могу что не так, он выводит какойто бред...
Возникла ошибка - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'burobd11' AND pass='273c381f0b8ec7f57077299dade42789'' AND pass=
SELECT * FROM guest WHERE name='SELECT * FROM guest WHERE name='burobd11' AND pass='273c381f0b8ec7f57077299dade42789'' AND pass='273c381f0b8ec7f57077299dade42789'
вот код:
<?php
$login1 = $_SESSION['user'];
$password1 = $_SESSION['password'];
$user = "SELECT * FROM guest WHERE name='".$login1."' AND pass='".md5($password1)."'";
$result = mysql_query($user);
if(!$result){
echo "Возникла ошибка - ".mysql_error()."<br>";
echo $user;
exit();
}
if($result) $r_user = mysql_fetch_assoc($result);
?>
|
Спасибо большое за помощь | |
|
|
|
|
|
|
|
для: Dmitry1988
(13.03.2010 в 12:17)
| | Вы в сессионный массив загнать умудрились какую-то чушь.
и mysql_real_escape_string() не применяете.
Вот и. | |
|
|
|
|
|
|
|
для: Trianon
(13.03.2010 в 12:40)
| | так я тут не использую сессионный массив, тут я просто приравниваю(когда человек входит под своим логином и паролем) имя к $_SESSION['user'] и пароль к $_SESSION['password'], а сессионный массив у меня используется в корзинке, но тут я эту сессиюю вообще не затрагиваю....
я использую везде mysql_escape_string(), его лучше тоже не использовать? | |
|
|
|
|
|
|
|
для: Dmitry1988
(13.03.2010 в 12:48)
| | я попытался просто вывести $_SESSION['user'] и $_SESSION['password'] на другой странице, так он записывает в $_SESSION['user'] запрос sql, которым я обращаюсь к БД и если еще раз зайти на страницу корзинки то он добавит еще один точно такой же запрос в $_SESSION['user'] и так далее, а $_SESSION['password'] работает правильно, просто хранит пароль не изменяясь...
я не понимаю почему он чегото записывает в $_SESSION['user'], у меня на этой странице есть функция, которая делает из сессии сессионный массив, но она относиться к другой сессии:
<?php
function worksCart ($prod) {
if($prod) { //добавление товаров и обновление корзины
if (!isset($_SESSION['cart'])) $_SESSION['cart'] = array();
$cart = &$_SESSION['cart'];
if (is_array($prod)) { //добавление массива товаров
foreach($prod as $key => $val) {
$key = intval($key);
if ($key) {
$val = intval($val);
if (isset($_POST['del']) && in_array($key, $_POST['del']) || !$val) {
//удаление товара из корзины
if (array_key_exists($key, $cart)){ unset($cart[$key]); unset($_SESSION['sumprice']); unset($_SESSION['summnoz']); }
} else $cart[$key] = $val; //добавление, обновление
}
}
} else {
//добавление одиночного товара
$id = intval($prod);
if ($id) $cart[$id] = array_key_exists($id, $cart) ? $cart[$id] + 1 : 1;
}
} else {unset($_SESSION['cart']); unset($_SESSION['sumprice']); unset($_SESSION['summnoz']);} //удаление корзины
}
?>
|
потом идет код корзинки, где и находится эта форма, которую я хочу заполнять автоматически для зарегестрированных пользователей, так пишу:
<?php
if(!empty($_SESSION['sid'])){ //$_SESSION['sid'] = md5(crypt($r['name'],$r['pass']));
$login1 = $_SESSION['user'];
$password1 = $_SESSION['password'];
$user = "SELECT * FROM `guest` WHERE `name`='".$login1."' AND `pass`='".md5($password1)."'";
$result = mysql_query($user);
if(!$result){
echo "Возникла ошибка - ".mysql_error()."<br>";
echo $user;
exit();
}
if($result) {while($r_user = mysql_fetch_assoc($result)){
?>
|
дальше у меня еще есть точно такойже запрос:
<?php
$q1 = mysql_query("SELECT * FROM guest WHERE name='".$_SESSION['user']."' AND pass='".$_SESSION['password']."' AND status=1");
?>
|
он служит для того чтобы справа вывести "Добрый день такойто".
Я нигде ничего не указываю $_SESSION['user'] чтобы в нее чтото записывалось....
Посоветуйте пожалуйста что-нибудь :-(
П.С. на локальном сервере не выдает никакой ошибки и не записывает ничего в $_SESSION['user'] | |
|
|
|
|
|
|
|
для: Dmitry1988
(13.03.2010 в 13:15)
| | я ничего не понимаю....я изменил $_SESSION['user'] на $_SESSION['nick'], и все работает нормально..., но когда вывожу $_SESSION['user'], то туда записывается запрос...вообщем какаято ерунда, Спасибо всем за ответы | |
|
|
|
|
|
|
|
для: Dmitry1988
(13.03.2010 в 12:48)
| | >так я тут не использую сессионный массив, тут я просто приравниваю(когда человек входит под своим логином и паролем) имя к $_SESSION['user'] и пароль к $_SESSION['password'],
Зачем?
Пароли в сессиях не хранят.
>а сессионный массив у меня используется в корзинке, но тут я эту сессиюю вообще не затрагиваю....
А вот это совершенно неважно.
>я использую везде mysql_escape_string(), его лучше тоже не использовать?
Где я такое написал?
Я написал что Вы не используете эту функцию (и уж как минимум - не используете корректно) - отсюда отчасти Ваша беда и исходит.
Помимо каши в сессионном массиве. | |
|
|
|
|
|
|
|
для: Trianon
(13.03.2010 в 14:29)
| | а я просто не так понял, я тут забыл использовать эту функцию(пытался исправить ошибку и забыл написать). Я обычно использую mysql_escape_string(); | |
|
|
|