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

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

Thread Status:
Not open for further replies.
  1. Gef3Dx

    Gef3Dx New Member

    Joined:
    27 Sep 2009
    Messages:
    28
    Likes Received:
    1
    Reputations:
    -5
    наверное это кодировка! Если у тебя UTF-8 перекодируй в UTF-8 без BOM. так как в простой utf-8 отправляются в начале первые 3 невидимые символа под названием BOM и sesion_start не бывает первой.
     
  2. _PixeL_

    _PixeL_ Banned

    Joined:
    7 Mar 2012
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    спасибо огромное) Щас буду разбирать )
     
  3. vernite akk=

    vernite akk= New Member

    Joined:
    18 May 2011
    Messages:
    73
    Likes Received:
    2
    Reputations:
    0
    Не грузятьса файлы большие(5 мб,) на сервер.
    upload_max_filesize 200мб
    max_execution_time 30
    memory_limit 128мб
    Файлы 128-188 кб грузяться норм гружу через Move UploadFile
     
  4. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    post_max_size еще настрой, он по дефольту 2M
     
  5. loze_mc

    loze_mc New Member

    Joined:
    2 Oct 2011
    Messages:
    31
    Likes Received:
    0
    Reputations:
    0
    ребят помогите составить условие, то я в пыхе вообще почти 0, мне нужно составить вот что:

    если человек кликает на "эту" кнопку то выводится "это", если на "ту" то выводится "то", и подскажите можно ли как нить сделать это проще если например кнопок много)
     
  6. tester_new

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

    Joined:
    12 Feb 2012
    Messages:
    300
    Likes Received:
    45
    Reputations:
    24
    в notepad++ пересохранил без BOM нефига не помогло....

    удаляю сессию я посылая вот такой запрос:

    <a charset='utf-8' rel='noreferrer' href='reg.php?del_session=1'>


    как вариант попробовать конечно слать его через Ajax...
     
  7. Eveline B.

    Eveline B. Banned

    Joined:
    20 Jan 2012
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    PHP:
    <form method="post">
    <input name="knopka1" type="submit" value="1">
    </form>
    <form method="post">
    <input name="knopka2" type="submit" Value="2">
    </form>
    <?php
    if (isset($_POST["knopka1"])) { echo $_POST["knopka1"]; }
    if (isset(
    $_POST["knopka2"])) { echo $_POST["knopka2"]; }
    ?>
    Каждая кнопка объявляется в новой форме.
     
  8. Eveline B.

    Eveline B. Banned

    Joined:
    20 Jan 2012
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    Все таки если присутствует ошибка, связанная с отправкой заголовков, то присмотрись... Нету ли отступов в коде сверху (не должно быть никакого вывода перед отправкой заголовков).

    Пробелы, текст, UTF-8 (должен быть без BOM).
    Посмотри первые строчки. Может там перенос строки или пробел.
     
  9. Kruzak

    Kruzak New Member

    Joined:
    21 Dec 2010
    Messages:
    126
    Likes Received:
    4
    Reputations:
    1
    у меня в логах ошибка
    PHP Notice: Undefined variable: res in /var/www/user/data/www/site.com/sys/zet.php on line 73

    73 строка
    $a = $zet['x_id'];

    я так понимаю лучше так исправить?
    $a = isset($zet['x_id'])?$zet['x_id']:'';
     
    #20189 Kruzak, 8 Mar 2012
    Last edited: 8 Mar 2012
  10. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    PHP:
    $a = isset($zet['x_id']) ? $zet['x_id'] : null;
     
  11. petryxa-mixa

    petryxa-mixa Member

    Joined:
    8 Jun 2010
    Messages:
    174
    Likes Received:
    7
    Reputations:
    0
    нужно прочитать файл построчно.
    Делаю так:открываю файл,читаю до конца строки.
    А вот как прочитать следующую строку непойму.
    Может как то это через массив делается?
    Специальных функций для этого как я понял нет.
     
  12. vernite akk=

    vernite akk= New Member

    Joined:
    18 May 2011
    Messages:
    73
    Likes Received:
    2
    Reputations:
    0
    post_max_size еще настрой, он по дефольту 2M,
    В общем причина оказалась в хостинге т.к не к каким настройкам php.ini я доступ не имею, то и зделать нечего нен смог у себя на серве изменил все ок, спасибо.
     
  13. loze_mc

    loze_mc New Member

    Joined:
    2 Oct 2011
    Messages:
    31
    Likes Received:
    0
    Reputations:
    0
    HTML:
    <form method="post">
    <input type="submit" class="info" src="…" name="info" />
    </form>
    
    PHP:
    <?php
    if (isset($_POST["info"])) { echo include'info.php'; }
    ?>
    ребят, почему при выводе страницы в конце появляется цифра 1, если ее в коде нигде нет О_о, и как от нее избавиться..
     
  14. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8
    Потому что страница так не выводится. Ты выводишь страницу, а потом значение, которое возвращает include().
    Для вывода страницы без 1 пиши просто
    PHP:
    include 'page.php';
     
  15. Qwert321

    Qwert321 Banned

    Joined:
    25 Jan 2009
    Messages:
    33
    Likes Received:
    0
    Reputations:
    0
    Ребят подскажите как оптимизировать код. Этот код просто записывает лог посещений, но все страницы куда я его добавляю явно медленнее загружаются
    Сам код(пишу недавно за безграмотность не судить):

    <?php
    $date=date("[D|d/m/Y|H:i:s]");
    $ip=$_SERVER['REMOTE_ADDR'];
    $reff=urlencode($_SERVER['HTTP_REFERER']);
    $lang_acc=urlencode($_SERVER['HTTP_ACCEPT_LANGUAGE']);
    $browser=urlencode($_SERVER['HTTP_USER_AGENT']);
    $req_url=urlencode($_SERVER['REQUEST_URI']);
    $host='localhost';
    $database='xxx';
    $user='xxx';
    $pswd='xxx';
    mysql_connect($host, $user, $pswd) or die("Can't connect to MySQL.");
    mysql_select_db($database) or die("Can't connect to database.");
    $query ="INSERT INTO my_sql_table (ip,from_lang, time, us_ag, ref, http_acc_lang) VALUES ('$ip','$req_url', '$date', '$browser','$reff','$lang_acc')";

    $ip_query = mysql_query('SELECT * FROM my_sql_table where ip="'.$ip.'"');
    //========== CHECK IP EXIST

    if (empty($ip_query)) {
    //echo "ip=".$ip."ip_Q=".$ip_query ;
    mysql_query($query) or die(mysql_error());
    mysql_close();
    } else {
    $count_logins = mysql_query('SELECT count_logins FROM `my_sql_table` WHERE ip="'.$ip.'" limit 1') or die (mysql_error());
    $c_plus = '0';
    $upd_count = 'UPDATE `xxx`.`my_sql_table` SET `count_logins` = "'.$c_plus.'" WHERE `my_sql_table`.`ip` = "'.$ip.'"';
    while($row = mysql_fetch_array($count_logins))
    {
    $c_plus = $row['count_logins'] + 1;
    }
    mysql_query('DELETE FROM my_sql_table WHERE ip="'.$ip.'" AND from_lang="'.$req_url.'"'.' AND ref="'.$reff.'"') or die (mysql_error());
    mysql_query($query) or die(mysql_error());
    $upd_count = 'UPDATE `xxx`.`my_sql_table` SET `count_logins` = "'.$c_plus.'" WHERE `my_sql_table`.`ip` = "'.$ip.'"';
    mysql_query($upd_count) or die(mysql_error());
    mysql_close();
    }
    ?>
     
  16. v00d

    v00d Member

    Joined:
    11 Oct 2010
    Messages:
    34
    Likes Received:
    10
    Reputations:
    7
    Убери urlencode, время храни в timestamp, убери цикл while ( применяй select count() ), разберись в целом в коде, я так и не понял что ты там в конце удаляешь.
    Или можешь описать словами как оно должно работать, я тебе напишу этот скрипт.
     
  17. InSys

    InSys Member

    Joined:
    2 Feb 2012
    Messages:
    24
    Likes Received:
    20
    Reputations:
    31
    1. Ошибка в коде
    PHP:
    $ip_query mysql_query('SELECT * FROM my_sql_table where ip="'.$ip.'"');
    //========== CHECK IP EXIST

    if (empty($ip_query)) {
    Должно быть, как минум, вот так:
    PHP:
    $ip_query mysql_query('SELECT * FROM my_sql_table where ip="'.$ip.'"');
    //========== CHECK IP EXIST

    if (mysql_num_rows($ip_query)==0) {
    Т.е. $ip_query практически никогда не будет empty (за исключением тех случаев, когда запрос выполнился с ошибками)

    2. Оптимизация IP
    Во первых, желательно IP в базе хранить в виде Int. В PHP есть встроенные функции ip2long и long2ip (почитайте про них подробнее). Зачем? Затем что выборка по Int идет гораздо быстрее чем по Varchar, а также это даст возможность использовать индексы.
    Во вторых, после преобразования ip в Int добавь в таблицу индекс по полю ip, это также в разы ускорит выборку.
    В третьих в твоей таблице, судя по логике скрипта, IP для каждой записи должен быть уникален, поэтому для IP стоит выбрать индекс типа Unique, это даст возможность еще лучше оптимизировать запросы к БД (см далее)

    3. Оптимизация запросов
    Сократите колличество запросов к БД. К примеру, ваш цикл запросов SELECT + INSERT + UPDATE (т.е. 3 запроса), можно заменить всего 1(!) запросом по типу "INSERT ... ON DUPLICATE KEY", и такой запрос выполнится приблизительно раза в два быстрее, чем три запроса вместе. Но для этого необходима правильная настройка индексов в таблице.

    И помимо этого:
    Не слушай его :) Да, убрать urlencode нужно, но, убирая, не забудь предусмотреть защиту от SQL injection, то есть желательно заменить urlencode на addslashes (но при этом учитывай magic_quotes, чтобы не получилось двойное слеширование).
    Для времени в MySQL предусмотренны свои типы полей, и желательно использовать их, но если лень с этим разбираться то впринципе можно оставить обычный Unix Timestamp, это не повлияет на производительность.

    Да, я понимаю, что возможно все то, что я написал выше, для тебя покажется незнакомым/сложным. Но я посоветую тебе, всеже погуглить и разобраться в том, что я написал, так как это действительно ценные советы, которые, возможно, тебе пригодятся в будущем.
     
    #20197 InSys, 9 Mar 2012
    Last edited: 9 Mar 2012
    1 person likes this.
  18. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    PHP:
    for ($i 1$i <$flom+1$i++ ){
      list(
    $FlomPar[$i], $FlomPar[$i][$i]) = explode(' ',$lines[$i]);
    }
    Почему не записывает в $FlomPar[$i][$i]? $FlomPar[$i] полностью правильно записывается, а второй массив нет.
     
  19. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Потому что первый параметр записывается в ячейку $FlomPar[$i], а второй в нее же, но только уже место для символа с индексом $i.
     
  20. petryxa-mixa

    petryxa-mixa Member

    Joined:
    8 Jun 2010
    Messages:
    174
    Likes Received:
    7
    Reputations:
    0
    пытаюсь здесь авторизоваться,пишет "No input file specified".что такое?может кто знает?это происходит уже после страницы с переадресацией.
     
Thread Status:
Not open for further replies.