Автор Тема: Php 5  syntax error  (Прочетена 3089 пъти)

rip_darkman

  • Напреднали
  • *****
  • Публикации: 65
    • Профил
Php 5  syntax error
« -: Feb 03, 2008, 15:55 »
Parse error: syntax error, unexpected '/' in /var/www/.tmp/edit_db_1.php on line 3

Ето и кодът на въпросния php скрипт :
Цитат
<?php

include_once(/home/vrs.inc);

$mysql_id = mysql_connect($hostname, $db_user , $password);
mysql_select_db($mysql_id, 'teachers''<img'>;

echo "<HTML> <HEAD><TITLE>Edit database</TITLE></HEAD> <BODY>";
echo "<form action='edit_db_1.php' method='POST'>";
echo "<input type='hidden' NAME='submited' VALUE='1'>";
echo "<input type='submit' value='Submit' >";
echo "</form>";
echo "</BODY>";
echo "</HTML>";
?>

В книжката ми за PHP пише,че вкарване на информация чрез include() от директория,която не е в  Apache (/var/www в моя случай) ,е допустимо.
Ето и цитат от /home/vrs.inc
Цитат
$hostname='localhost';
$db_user='nqkoi_user';
$password='nqkakva_parola';

Проблемът според мен,е че въобще не иска да възприеме като източник директория,която почва с " / ".А ми се иска по този начин да стане предаването на паролите за mysql за допълнителна сигурност.Благодаря Ви предварително.
Активен

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
Php 5  syntax error
« Отговор #1 -: Feb 03, 2008, 17:13 »
пробвай да преместиш inc файла под root-a на www и пробвай пак, защото вероятно апаш няма права да чете файла
Активен

0x2B|~0x2B

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Php 5  syntax error
« Отговор #2 -: Feb 03, 2008, 17:14 »
1. Загради /home/vrs.inc в кавички. Т.е. да стане
Примерен код
include_once("/home/vrs.inc");

2. vrs.inc трябва също да е оградено от <? ?>, тъй като е php код от променливи. Т.е. трябва да изглежда така
Примерен код
<?

$hostname='localhost';
$db_user='nqkoi_user';
$password='nqkakva_parola';

?>
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

rip_darkman

  • Напреднали
  • *****
  • Публикации: 65
    • Профил
Php 5  syntax error
« Отговор #3 -: Feb 03, 2008, 23:52 »
Благодаря за помоща ,neter.  ':ok:'

Като пробвах с кавички преди ми изкарваше информацията в vrs.inc '<img'> А то се оказало,че трябва и inc-файлът да е с отварящи етикети ...

Romeo_ninov ,целта беше точно apache да няма правата да чете този файл ':p' Само PHP дотолкова,че да го include-не.(но не и да листва информацията при сваляне на edit_db_1.php)
Активен

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
Php 5  syntax error
« Отговор #4 -: Feb 04, 2008, 07:52 »
Цитат (rip_darkman @ Фев. 04 2008,00:52)
Romeo_ninov ,целта беше точно apache да няма правата да чете този файл ':p' Само PHP дотолкова,че да го include-не.(но не и да листва информацията при сваляне на edit_db_1.php)

А ти къде мислиш че работи РНР? В средата на апаша (да не те затрудняваме) и наследява от него всички права
Активен

0x2B|~0x2B

sunshine

  • Напреднали
  • *****
  • Публикации: 177
    • Профил
Php 5  syntax error
« Отговор #5 -: Feb 04, 2008, 11:38 »
rip_darkman, за да нямаш проблеми ползвай единична кавичка за php а за html двойна, а не обратното,
реда include_once(/home/vrs.inc); за да не ти дава грешка трябва да е в кавички единични или двойни по принцип защото имената на файлове се водят като масив от символи (стринг) и трябва да стане  include_once('/home/vrs.inc''<img'>; и вместо да поставяш на всеки ред echo можеш да сложеш само веднъж, а echo да слагаш когато имаш цикъл който да извежда нещо или някаква проверка, също така вместо echo можеш да ползваш print в различните му форми.

echo '<HTML> <HEAD><TITLE>Edit database</TITLE></HEAD> <BODY>
<form action="edit_db_1.php" method="POST">
<input type="hidden" NAME="submited" VALUE="1">
<input type="submit" value="Submit" >
</form>
</BODY>';
echo '</HTML>';
Активен

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Php 5  syntax error
« Отговор #6 -: Feb 04, 2008, 13:04 »
За кавичките - използването на единична кавичка в PHP код означава: никакво парсване на стринга" - т.е. ако имаш в него променливи или специални символи (прим. \n) те ще се приемат като символи:

Примерен код

$var = 'variable';
echo 'This is a $var \n.'
ще даде в резултат, точно:
This is a $var \n.

Ако използваш двойни кавички, горният пример ще даде:
This is a variable
.


За предпочитане е, когато нямаш променливи или специални символи в string-a да ползваш единични кавички - много по-бързо се парсва от PHP-то.

За по-големи блокове HTML (или стрингове изобщо) можеш да ползваш този синтаксис:
Примерен код

       echo <<< HERE
       This is a $var
HERE


HERE е свободно избираем дума-делимитер - т.e. string-a почва от HERE и завършва при следващата му поява. Особеното е, че пред завършващия делимитер не трябва да има никакви шпации и табулации - иначе ще ти даде синтактична грешка.

ПП: Гледам, че искаш по-висока сигурност - макар и аз да не го прилагам, някои хора препоръчват променливите, които съдържат чувствителна информация да се унищожат веднага след използването им, за да се избегне евентуалния им прочит чрез пробив в кода по-нататък.



Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Php 5  syntax error
« Отговор #7 -: Feb 04, 2008, 13:28 »
Цитат (neter @ Фев. 03 2008,17:14)
2. vrs.inc трябва също да е оградено от <? ?>, тъй като е php код от променливи. Т.е. трябва да изглежда така
Примерен код
<?

$hostname='localhost';
$db_user='nqkoi_user';
$password='nqkakva_parola';

?>

'<img'>
Цитат
 short_open_tag  boolean

    Tells whether the short form (<? ?> ) of PHP's open tag should be allowed. If you want to use PHP in combination with XML, you can disable this option in order to use <?xml ?> inline. Otherwise, you can print it with PHP, for example: <?php echo '<?xml version="1.0"'; ?> . Also if disabled, you must use the long form of the PHP open tag (<?php ?> ).

        Note: This directive also affects the shorthand <?= , which is identical to <? echo . Use of this shortcut requires short_open_tag to be on.
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Php 5  syntax error
« Отговор #8 -: Feb 04, 2008, 15:52 »
VladSun, мерси че си разяснил вместо мен. След темата с бозата, ме домързя да пиша дълги обяснения и тук и го дадох по-набързо. Написал съм нещата така, както бих ги написал и аз. Тъй като в по-честия случай ми е нужна употребата на двойни кавички, използвам единични кавички само когато се налага, защото за случаите, когато е все едно дали са двойни или единични, двойните кавички се виждат по-лесно в кода '<img'> (честно казано не съм правил тестове кои кавички се парсват по-бързо). Отварящия таг също го пиша в пълната му форма, само когато се налага, понеже в моята дейност много рядко се налага да смесвам php и xml, а по принцип в php.ini по подразбиране си седи "short_open_tag = On". Общо взето, препоръката ми към rip_darkman е, да си изгради собствена схема от навици, която най-много ще му приляга на начина на работа, за да може да пише нещата по-бързо, вместо да губи мисловно време в несъществени неща. И естествено, rip_darkman, недей да си пестиш четенето '<img'>
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Php 5  syntax error
« Отговор #9 -: Feb 08, 2008, 01:22 »
Цитат (neter @ Фев. 04 2008,15:52)
честно казано не съм правил тестове кои кавички се парсват по-бързо

Аз съм правил '<img'>

Примерен код
$s = "blah-blah $blah"

е ~ два пъти по-бавно от
Примерен код
$s = 'blah-blah '.$blah
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Php 5  syntax error
« Отговор #10 -: Feb 08, 2008, 15:24 »
Аха. Съгласих се. Сега ме чака редактиране на една торба скриптове. Ама карай, важен е крайният резултат. Пак мерси за информацията '<img'>
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

Nikolavp

  • Напреднали
  • *****
  • Публикации: 408
    • Профил
    • WWW
Php 5  syntax error
« Отговор #11 -: Feb 08, 2008, 18:05 »
Цитат (VladSun @ Фев. 08 2008,02:22)
Цитат (neter @ Фев. 04 2008,15:52)
честно казано не съм правил тестове кои кавички се парсват по-бързо

Аз съм правил '<img'>

Примерен код
$s = "blah-blah $blah"

е ~ два пъти по-бавно от
Примерен код
$s = 'blah-blah '.$blah

Много интересно никога не се бях замислял, а и не сам го виждал по съвети за оптимизиране на кода '<img'>. Въпреки, че не пиша много на php(даже никак). Винаги сам се чудел на такива работи '<img'>
Активен

http://blog-nikolavp.rhcloud.com - простотиите, с които се занимавам в свободното време

mom

  • Напреднали
  • *****
  • Публикации: 266
  • Distribution: Ubuntu
  • Window Manager: Compiz
    • Профил
Php 5  syntax error
« Отговор #12 -: Feb 08, 2008, 20:39 »
Написах следното:
Примерен код

   $str = ';la fsdjfn sdofjp;jjkl df;psdfh jldsp;jdf iljldsfj isldofj sdf';
   $time1 = microtime(true);
   for ($i=0; $i<100; $i++) {
      $foo = "sdfgs gfs df gdsfgh dgfhd fghdfg $str";
   }
   $time2 = microtime(true);

   $time3 = microtime(true);
   for ($i=0; $i<100; $i++) {
      $foo = "sdfgs gfs df gdsfgh dgfhd fghdfg ".$str;
   }
   $time4 = microtime(true);
   echo number_format(($time2-$time1), 20, '.', '')."\n";
   echo number_format(($time4-$time3), 20, '.', '')."\n";


и пуснах. След многократно натискане на F5 резултатът устойчиво клонеше към:

0.00007104873657226562
0.00004696846008300781

Според мен наистина има разлика за времето на парсване но си е направо пренебрежима от 3 до 5 стохилядни от секундата, т.е. трябват поне 10000 подобни цикъла със стрингови операции, че да има наистина осезаемо забавяне.

Разбира се на различни машини ще е различно



Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Slackware i  config na  Scannerl
Хардуерни и софтуерни проблеми
max_paine 0 2986 Последна публикация Apr 14, 2003, 11:29
от max_paine
MySQL error messages v apache error log
Настройка на програми
plamensl 2 5360 Последна публикация May 21, 2003, 15:27
от plamensl
Мазало с lilo  & windows boot manager  - Помощ!
Настройка на програми
ven 2 5134 Последна публикация Oct 17, 2005, 14:05
от RealUseR
syntax-сис
Предложения за подобрения на сайта
july 2 1171 Последна публикация Nov 13, 2005, 12:21
от
Debian  - icwm error
Настройка на програми
BgLiNuXUser 4 1388 Последна публикация Mar 19, 2006, 16:36
от