Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > переадресация юзера на заданный линк


Автор: almen 7.7.2008, 10:19
День добрый,
обычная схема:
юзер проходит регистрацию, вносится в БД, получает ссылку для активации, входит под своим логином и после зтого должен перебрасываться на свой уникальный URL. Все работает до момента отправления юзера на свой уникальный вебадрес. 

Вот скрипт login.php

Код


<?
session_start();
$dbuser= "bla bla";
$dbpass= "bla bla";
if (isset($_POST['login'])) {
   $passwordHash = md5($_POST['password']);
   $login = $_POST['login'];

   if (!preg_match("/^\w{3,}$/", $login)) {
      die('Login ist falsch!');
   }
   $link = mysql_connect('localhost',$dbuser,$dbpass);
   if (!$link) {
      die('Keine Verbindung mit DB!');
   }else{
      mysql_select_db('portal', $link);
      $res = mysql_query("SELECT status FROM users WHERE login='$login'", $link);

      if (mysql_num_rows($res) < 1) {
         mysql_close($link);
         die('Ihre Angaben zum Login sind ung&uuml;ltig.<br>
Bitte pr&uuml;fen Sie die Schreibweise Ihres Benutzernamens und Ihres Passwortes und versuchen Sie es erneut.<br>
Achten Sie beim Passwort auch auf Gro&szlig;- und Kleinschreibung oder darauf, ob versehentlich die Feststelltaste gedr&uuml;ckt ist.');
      }

      if (mysql_result($res, 0) != 1) {
         mysql_close($link);
         die('Der Login wurde nicht aktiviert!');
      }

       
      $_SESSION['user'] = $login;
      mysql_close($link);
    
      header ("location: userpage.php");

   }
}
?>




логика  userpage.php следующая:
проверка существует ли вообще такой user, если нет иди на index.php.
если же он идентифицирован, то вытащи из таблицы его вебадрес и отправь его туда. 

Код

<?php
session_start();
if (!isset($_SESSION['user'])) {
    header ("location: index.php");
    exit();
}else {
    $login = $_SESSION['user'];
    $res = mysql_query("SELECT * FROM users WHERE login='$login'", $link);
    if (mysql_num_rows($res) < 1) {
        // raz takogo usera net v BD, no on est' v sessii - zna4it 4to-to ne tak (haker?) -
        // udalyaem ego iz sessii pereadresuem na glavnuyu
        mysql_close($link);
        unset($_SESSION['user']);
        header ("location: index.php");
        exit();
    }else {      
        $myrow = mysql_fetch_array($res);
        // nije raspe4ativaem li4nuyu infu usera is massiva $myrow
    }
}
?>



Ошибки выдает такие:

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\xampp\htdocs\portal\userpage.php on line 8

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\portal\userpage.php on line 9

Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in C:\xampp\htdocs\portal\userpage.php on line 12

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\portal\userpage.php:8) in C:\xampp\htdocs\portal\userpage.php on line 14

Не пойму, где напортачил?

Автор: americanets 7.7.2008, 15:34
Цитата(almen @  7.7.2008,  11:19 Найти цитируемый пост)
Не пойму, где напортачил?




Цитата(almen @  7.7.2008,  11:19 Найти цитируемый пост)
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\xampp\htdocs\portal\userpage.php on line 8


Добавлено @ 15:34
Цитата(almen @  7.7.2008,  11:19 Найти цитируемый пост)
 
Код

 $res = mysql_query("SELECT * FROM users WHERE login='".$login."'", $link);


Автор: almen 7.7.2008, 15:41
исправил, но ошибка таже

Автор: Feldmarschall 7.7.2008, 15:44
значит, не исправил

Автор: almen 7.7.2008, 15:49
я просто скопировал эту строчку

Добавлено через 6 минут и 44 секунды
башка уже в тумане! Разжуйте неучу поподробнее...

Автор: Feldmarschall 7.7.2008, 16:30
с базой соединяться  в userpage кто будет? Пушкин?

Автор: almen 7.7.2008, 18:31
я же не знаю, за что хвататься

Код

<?php
session_start();
include ("blocks/bd.php");
if (!isset($_SESSION['user'])) {
    header ("location: index.php");
    exit();
}else {
    $login = $_SESSION['user'];
   $res = mysql_query("SELECT * FROM users WHERE login='".$login."'", $link);
    if (mysql_num_rows($res) < 1) {
        // raz takogo usera net v BD, no on est' v sessii - zna4it 4to-to ne tak (haker?) -
        // udalyaem ego iz sessii pereadresuem na glavnuyu
        mysql_close($link);
        unset($_SESSION['user']);
        header ("location: index.php");
        exit();
    }else {      
        $myrow = mysql_fetch_array($res);
        // nije raspe4ativaem li4nuyu infu usera is massiva $myrow
    }
}
?>


Добавлено через 1 минуту и 5 секунд
 а ошибки те же:

Код

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\xampp\htdocs\portal\userpage.php on line 9

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\portal\userpage.php on line 10

Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in C:\xampp\htdocs\portal\userpage.php on line 13

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\portal\userpage.php:9) in C:\xampp\htdocs\portal\userpage.php on line 15


Автор: Feldmarschall 7.7.2008, 18:40
и что у тебя там, в этой blocks/bd.php?

Автор: almen 7.7.2008, 19:08
<?
$db = mysql_connect ("localhost","alm","74521");
mysql_select_db("almen_blog",$db);
?>

Добавлено через 4 минуты и 55 секунд
думаю, что запутался с login.php. Подскажи, как изменить скрипт: вместо 
Код

$dbuser= "bla bla";
$dbpass= "bla bla"; 
 и 


Код

if (!$link) {
      die('Keine Verbindung mit DB!');
   }else{
      mysql_select_db('almen_blog', $link);
      $res = mysql_query("SELECT status FROM users WHERE login='$login'", $link);



поставить просто 
Код

include ("blocks/bd.php");


Добавлено через 12 минут и 41 секунду
login.php

Код


<?
session_start();
$dbuser= "bla";
$dbpass= "bla";
if (isset($_POST['login'])) {
   $passwordHash = md5($_POST['password']);
   $login = $_POST['login'];

   if (!preg_match("/^\w{3,}$/", $login)) {
      die('Login ist falsch!');
   }
   $link = mysql_connect('localhost',$dbuser,$dbpass);
   if (!$link) {
      die('Keine Verbindung mit DB!');
   }else{
      mysql_select_db('almen_blog', $link);
      $res = mysql_query("SELECT status FROM users WHERE login='$login'", $link);
    
      if (mysql_num_rows($res) < 1) {
         mysql_close($link);
         die('Ihre Angaben zum Login sind ung&uuml;ltig.<br>
Bitte pr&uuml;fen Sie die Schreibweise Ihres Benutzernamens und Ihres Passwortes und versuchen Sie es erneut.<br>
Achten Sie beim Passwort auch auf Gro&szlig;- und Kleinschreibung oder darauf, ob versehentlich die Feststelltaste gedr&uuml;ckt ist.');
      }

      if (mysql_result($res, 0) != 1) {
         mysql_close($link);
         die('Der Login wurde nicht aktiviert!');
      }
  
       
      $_SESSION['user'] = $login;
      mysql_close($link);
    
      header ("location: userpage.php");

   }
}
?>



Автор: Feldmarschall 7.7.2008, 19:50
как-как? записать первые два куска кода в blocks/bd.php
только во втором убрать запрос (последнюю строчку)
и вообще ты как-то странно выделил.
Код

$dbuser= "bla";
$dbpass= "bla";
mysql_connect('localhost',$dbuser,$dbpass);
mysql_select_db('almen_blog', $link);

вот что надо там написать

а из логина ,соответственно - убрать

Автор: Sannis 7.7.2008, 19:50
Цитата

$db = mysql_connect ("localhost","alm","74521");

$link = mysql_connect('localhost',$dbuser,$dbpass);


'$db' == '$link' ???

Добавлено через 35 секунд
Банальная невнимательность.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)