Проблеми с скриптом регистрации

Тема в разделе "PHP программирование", создана пользователем drag-andriy, 23 дек 2007.

Статус темы:
Закрыта.
  1. drag-andriy

    drag-andriy Гость

    есть скрипт.проблема,не могу подключить к ниму базу
    и глючит кроме весь.Помогите
    не могу разобраться как подключить функцию из
     
  2. GOsha

    GOsha Гость

    Тут разберусь можно никак )))
     
  3. maykoff

    maykoff Гость

    Для: drag-andriy

    Код (Text):
    require(INC_DB);
    здесь ты пытаешься подключить файл, но константа INC_DB не определена, поэтому преобразуется в строку с именем этой константы. Естественно, что файла "INC_DB" у тебя нет.

    Подключаешь файл - подключаются все функции, определённые в этом файле, но из этой записи следует, что ты пытаешься подключить файл, лежащий в КОРНЕ СЕРВЕРА. При нормальных настройках сервера - тебе это не удастся, недостаточно прав. Файл должен находиться там, где он бкдет доступен
     
  4. drag-andriy

    drag-andriy Гость

    Так я подключаю файл с функциями
    Код (Text):
    include_once('./db.php');
    потом хочу выполнить фунцию ,скажем, db_conect
    Код (Text):
    db_conect();
    ето верно???
     
  5. maykoff

    maykoff Гость

    Верно.
    Если функция определена в подключаемом файле, то она автоматически доступна во всём скрипте.
     
  6. drag-andriy

    drag-andriy Гость

    Для: maykoff
    Опять столкнулся с проблемой.Изначально у меня был ХТМЛ,поменял на ПХП.Хочу на страницу добавить, чтобы отображался пользователь, код добавляю так, вставляю строчку,там где хочу
    Код (Text):
    <?PHP
    include_once('./наме.php');
    ?>
    Код (Text):
    <?  session_start();

    $uid = $_SESSION['uid'];
    $pwd = $_SESSION['pwd'];

    require('main.php');

    mysql_connect(Hostname, MYSQLUSER,MYSQLPASS) or die("... " . users);

    // базу
    mysql_select_db(users) or die(".. " . users);


    error_reporting(E_PARSE);



    if ($uid){

    echo $uid ;

    }



    function db_disconnect()
    {
    global $db;

    if ($db)
    {
    mysql_close($db);
    $db = NULL;
    }
    }

    ?>
    Вот,оно добавляет,польз отображается,но
     
  7. maykoff

    maykoff Гость

    session_start работает следующим образом - в браузер отправляется идентификатор сессии (вроде куки), который показывает скрипту, где на сервере искать сохранённую сессию.
    Обязательное условие - он (идентификатор) должен быть отправлен в заголовке, то есть ДО ВЫВОДА HTML.
    код типа
    Код (Text):
         <? session_start();
    ...
    ...?>
    <html>
    <head>
    ...
    ...
    работать НЕ БУДЕТ, потому что перед открывающим тегом <? стоит пробел, и он до вызова функции session_start() УЖЕ ОТПРАВЛЕН

    ошибка как раз об этом говорит -
    - невозможно отправить идентификатор сессии - заголовки уже отправлены (вывод стартовал в <место ошибки>

    Стартуй сессию до любого вывода.

    Если у тебя скрипт, где сессия стартует, подключается в другом скрипте - то следует проверить отсутствие вывода до старта сессии в обоих скриптах. А вообще - это очень дурной стиль программирования. Как минимум, следует разделять обработку и вывод данных, хотя бы так:
    Код (Text):
    <?php
    //обработка данных, формирование переменных для вывода
    $var = 'превед!';
    ?>
    <html>
    <head><title>превед</title></head>

    <body>
    <!-- выводимые данные -->
    <?=$var?>
    </body>
    </html>
    А ещё лучше - пользуйся шаблонизаторами.
     
  8. drag-andriy

    drag-andriy Гость

    maykoff
    может подскажеш,какими.Стоит задача,надо СМИ.никакой нормальной я не нашел.остановилса на простенькой,без регистр,работаєт без БД.
    Потом решил доработать регистр.нашел скрипт(сам я пока в ПХП ламер :p ;),но ето пока!!!)
    Тут полезло,нихр***на не работает.тут я давай литературу на виходних штубить.Кароче вивод такой,ПХП-респектуха ;) и уважуха ;).
    вернемся к теме,Скрипт работает на mysql,базу зделал,ето не проблема.ну і взял за основу скрипт и начал встраевать в СМИ.получилось вивести нейм юзера,к стати,
    Код (Text):
    session_start();
    я подавил
    Код (Text):
    error_reporting(E_PARSE);
    ,сначала просто ставил в начало
    ,но мозилла ричала,потом доступ к фулнюз зделал только зарегистр.польз.но тут думаю ошибку зделал.к каждому обращунию на ссилку фулнюз,идет проверка в БД юзера.ето ничево при 10-20,а эсли 1000???тут и задумалса,тем ли путем иду.но ничего,буду осваевать ПХП.жде критики :(
     
  9. maykoff

    maykoff Гость

    Шаблонизатор я использую smarty, но для простого сайта в этом смысла нет особого, можно просто отделить код php от html как я показал. Ну или инклюдить html из другого файла.

    @ - не убирает ошибку, а просто пресекает вывод сообщения об ошибке в случае её возникновения.
    Такой подход годится, когда ты понимаешь все последствия возникшей ошибки и то, насколько этот оператор тормозит скрипт.
    например:
    Код (Text):
    $str = '';//объявлена переменная
    $str = @$_POST['str'];//если в post что-то есть - то переменная заполняется
    if($str) {...}//если переменная не пуста или не             нулевая - то...
    В твоём случае, как мне кажется, ты просто подавил вывод ошибки, не устранив её причину.
     
  10. romy4

    romy4 Гость

    Для: drag-andriy
    ты разобрался с подключением?
     
  11. drag-andriy

    drag-andriy Гость

    Да с, разобрался с подключением.
    тут по ходу дела куча непонимаемих мною вещей в меру редактирования скриптов.щас сиджу,разбираюсь
     
  12. romy4

    romy4 Гость

    не делай так
    $str = isset($_POST['str']) ? $_POST['str'] : '';

    подавление ошибок - это не избежание ошибки. Тем более, что "собака" довольно замедляет скрипт, если $_POST['str'] индекс отсуствует.
     
  13. drag-andriy

    drag-andriy Гость

    Есть проверка, файл ver.php
    Код (Text):
    <?


    require('same.php');

    session_start();

    if (!isset($_SESSION['uid'])) {
    $_SESSION['uid'] = $_REQUEST['uid'];
    $_SESSION['pwd'] = $_REQUEST['pwd'];
    }

    $uid = $_SESSION['uid'];
    $pwd = $_SESSION['pwd'];

    db_connect();

    $res = mysql_query("SELECT * FROM users WHERE uid='$uid' AND pwd='$pwd' and status='active'");
    $re = mysql_fetch_array($res);

    if ($uid){

    echo "Пользователь: ".$uid;

    }
    else {

    include(INC_DIR."login.php");
    unset($_SESSION['uid']);
    unset($_SESSION['pwd']);



    }


    db_disconnect();




    ?>
    работает.Пробую встроить в index.php
    Код (Text):
    <?PHP

    include("./ver.php");
    ?>

    <html>

    <head>
    <title></title>
    </head>

    <body>

    <?PHP
    if($uid)
    {echo "Пользователь: ".$uid;
    } else
    {include(INC_DIR."login.php");
    }

    ?>

    </body>

    </html>
    И тут рычит!!!
    Ошибок нет,но вставляет login.php
     
  14. drag-andriy

    drag-andriy Гость

    если перейти mysayt/ver.php
    работает!!!пробовал з логином-показивает логин
    без показивает станицу login.php
     
  15. MajestiC

    MajestiC Гость

    Ай-ай-ай. Надо экранировать входящие данные.

    http://phpfaq.ru/slashes
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей