[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. Хацкер

    Хацкер Elder - Старейшина

    Joined:
    25 Jul 2008
    Messages:
    107
    Likes Received:
    9
    Reputations:
    0
    Незнаю как это обьяснить но нужно сделать многоязычный сайт. Есть ли у кого скрипт? Смотрел примеры делал но что-то не выходит...
     
  2. P3L3NG

    P3L3NG Banned

    Joined:
    4 Jun 2008
    Messages:
    175
    Likes Received:
    204
    Reputations:
    11
    пришло в голову это.

    PHP:
    <?php
    $lan 
    $_GET['lang'];
    if (
    $lan == 1) echo '<html>русиш лэнгвидж (текст на русском)</html>';
    if (
    $lan == 2) echo '<html>инглиш лэнгвидж (текст на английском)</html>';
    if (
    $lan == 3) echo '<html>падонаг лэнгвидж (текст на падонкаффском =) )</html>';
    ?>
    доработай, может понравится
     
    1 person likes this.
  3. Хацкер

    Хацкер Elder - Старейшина

    Joined:
    25 Jul 2008
    Messages:
    107
    Likes Received:
    9
    Reputations:
    0
    Да это конечно просто, но всеже мне нужно каждое слово делать. типа выбор языка пользователем, куки придеться применить, и еще например вывод слова как $lang[0] у меня есть такой пример только неработает чтото щас найду выложу...
     
  4. Хацкер

    Хацкер Elder - Старейшина

    Joined:
    25 Jul 2008
    Messages:
    107
    Likes Received:
    9
    Reputations:
    0
    PHP:
    if(empty($lang)) $lang 'ru';
    if (!empty(
    $_POST['lang']))
    {
        
    $lang1 basename($_POST['lang']);
        if((
    $lang1 != $lang) && is_file('lang/'.$lang1.'.php')) $lang $lang1;
        @
    setcookie("lang"$langtime()+333333333);
        
    refresh();
    }
    if (!empty(
    $_COOKIE['lang']))
    {
        
    $lang1 basename($_COOKIE['lang']);
        if((
    $lang1 != $lang) && is_file('lang/'.$lang1.'.php')) $lang $lang1;
    }
    include(
    'lang/'.$lang.'.php');
    if(
    substr_count($_SERVER['REQUEST_URI'], '/')>&& ereg('set=',$_SERVER['REQUEST_URI']))
    {
            
    header('LOCATION: http://'.$HTTP_SERVER_VARS['HTTP_HOST'].'/?'.strstr($_SERVER['REQUEST_URI'], 'set='));   exit;
    }

    В папке lang файлы ru.php en.php в файл содержания типа

    $lang[1] = "1";
    $lang[2] = "2";
    $lang[3] = "3";

    Почему не работает незнаю....
     
  5. Jer1cho

    Jer1cho Member

    Joined:
    6 Jun 2008
    Messages:
    212
    Likes Received:
    65
    Reputations:
    10
    Пример:
    /lang/en.php:
    PHP:
    <?php
    $lng
    ['title'] = 'Main page';
    $lng['hello'] = 'Welcome';
    ?>
    /lang/ru.php:
    PHP:
    <?php
    $lng
    ['title'] = 'Главная страница';
    $lng['hello'] = 'Добро пожаловать';
    ?>
    index.php:
    PHP:
    <?php
    error_reporting
    ('0');
    if(
    $_GET['l']=='ru'){ $language 'ru'; } else { $language 'en'; }
    include(
    './lang/'.$language.'.php');
    ?>
    <html>
     <head>
        <title><?=$lng['title']?></title>
     </head>
     <body>
        <h1><?=$lng['hello']?></h1>
     </body>
    </html>
    То есть в индексе инклудится языковой файл, index.php?l=ru — значение передается в get-запросе, можно и в куках.
    Этот код уязвим php-incl, но думаю смысл понятен.
     
    1 person likes this.
  6. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Ну как вариант писать в куку язык, а потом в самом главном файле проверять эту куку и грузить шаблон с выбранным языком.
    Типо так:
    PHP:
    <?php
    #Страница выбора языка
    $arr = array(
        
    0//ru (default)
        
    1//en
        
    //ukr
        
    );
    $lang 1//Выбираем англ к примеру
    setcookie('lang'$arr[$lang]);

    #Самый главный файл
    $lang = !empty($_COOKIE['lang']) && is_numeric($_COOKIE['lang'])) ? $_COOKIE['lang'] : '';
    if(
    $lang == 1){
        require_once(
    'template_en.tpl');
    }elseif(
    $lang == 2){
        require_once(
    'template_ukr.tpl');
    }else{
        
    #Грузим дефолтовый
        
    require_once('template_ru.tpl');
    }
    ?>
    Вместо множества if-ов можно к примеру проверять правильность куки через array_key_exists() к примеру...
     
  7. Хацкер

    Хацкер Elder - Старейшина

    Joined:
    25 Jul 2008
    Messages:
    107
    Likes Received:
    9
    Reputations:
    0

    а в tpl типа вся страничка?
     
  8. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Ну да, подразумевается что это шаблон.
    если я правильно понял то ты собираешься без шаблонов всё это делать....имхо это будет очень большое извращенство...легче взять шаблон, перевести его на множество языков и юзать в зависимости от указанного юзером языка :)
     
    1 person likes this.
  9. Хацкер

    Хацкер Elder - Старейшина

    Joined:
    25 Jul 2008
    Messages:
    107
    Likes Received:
    9
    Reputations:
    0

    Да ты прав это плюс к тому что можно картинки на инглиш сделать)
     
    1 person likes this.
  10. mr.The

    mr.The Elder - Старейшина

    Joined:
    30 Apr 2007
    Messages:
    1,080
    Likes Received:
    456
    Reputations:
    38
    #Wolf#, примерно вот так:
    PHP:
    $file_text=file_get_contents ("file.txt");
    $file_text=str_replace($str,"",$file_text);
    $file=fopen("file.txt","w+");
    fwrite($file,$file_text);
    fclose($file);
    Это скрипт замены повторов.
     
  11. Boccob

    Boccob Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    37
    Likes Received:
    18
    Reputations:
    1
    PHP:
    else
    замени на
    PHP:
    elseif (!strpos(file_get_contents('file.txt'), $login111.":".$password1))
    тогда скрипт будет учитывать наличие такой связки логин:пасс в файле и если такая связка уже есть, то писать не будет (как я понял тебе нужно именно это)
     
    #4771 Boccob, 18 Aug 2008
    Last edited: 18 Aug 2008
  12. Boccob

    Boccob Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    37
    Likes Received:
    18
    Reputations:
    1
    и имя, и пароль три раза были одинаковыми?
    up:
    попробуй так:
    PHP:
    elseif (strpos(file_get_contents('file.txt'), $login111.":".$password1) !== FALSE)
     
    #4772 Boccob, 18 Aug 2008
    Last edited: 18 Aug 2008
  13. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    А так?
    PHP:
     $login111=$_POST['login_name'];
     
    $password1=$_POST['login_password'];
     
    $file fopen ("file.txt","a");
     
    $str ="".$login111.":".$password1."\r\n";
     if ( !
    $file )
     {
     echo(
    "Ошибка открытия файла");
     }
     elseif (!
    in_array($str,file('file.txt')));
     
    fputs $file$str);
     
    fclose ($file);  
     
    _________________________
  14. Boccob

    Boccob Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    37
    Likes Received:
    18
    Reputations:
    1
    PHP:
    elseif (strpos(file_get_contents('file.txt'), $login111.":".$password1) === FALSE)
    походу надо так, а не !== :)
     
  15. Boccob

    Boccob Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    37
    Likes Received:
    18
    Reputations:
    1
    вероятно, из-за того, что после elseif'а с условием стоит ';', если ее убрать по идее должно норм работать
     
  16. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    Столкнулся с проблемой ..

    PHP:
        if ($_SERVER['PHP_AUTH_USER'] == $l_user and $_SERVER['PHP_AUTH_PW'] == $l_pass)
        {
            
    done();
        } else
        {
            
    header('WWW-Authenticate: Basic realm="See error ..."');
            
    header('HTTP/1.0 401 Unauthorized');
            
    template('401.html');
        }
    Окошко авторизации вылетает, но логин с паролем не проглатывает .. в чем проблема?
    register_globals = off
     
  17. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    У меня все работает, а вы уверены, что функции done() и переменные $l_user и $l_pass заданы и заданы верно?
     
    _________________________
  18. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    Переменные $l_user и $l_pass определены на 1 строку выше, просто их не стал копировать .. проверял,
    $_SERVER['PHP_AUTH_USER'] равен $l_user
    $_SERVER['PHP_AUTH_PW'] равен $l_pass
    НО done(); не выполняется, а вторая ветка if'а ..(else{header(' ..)
    сижу вот думаю - когда дурка приедет, чур йа сникерс .. или наполеон ..
     
  19. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    А если от обратного идти?
    PHP:
    <?PHP
    $name
    ='test';
    $pass='test';
    if (!isset(
    $_SERVER['PHP_AUTH_USER']) || $_SERVER['PHP_AUTH_USER']!==$name || $_SERVER['PHP_AUTH_PW']!==$pass)
       {
       
    header('WWW-Authenticate: Basic realm="See error.."');
       
    header('HTTP/1.0 401 Unauthorized');
       exit(
    template('401.html'));
       }
    ?>
     
    _________________________
    1 person likes this.
  20. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    О_О в root мне ноги, заработало .. пасибо))
     
    1 person likes this.
Thread Status:
Not open for further replies.