There is no error message given if you accidentally use KB, MB or GB instead of K, M or G. From what I can tell the alphabetic characters will be ignored and it will be treated as bytes, so 1GB actually equals 1 Byte. phpinfo() and ini_get() will report what you have written e.g. 1GB, so it will not be clear that there is anything wrong with your setting even though there is.Користење на PHP
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Користење на PHP
Референца за `faq.using.php` со подобрена типографија и навигација.
Користење на PHP
Овој дел собира многу чести грешки со кои може да се соочите при пишување PHP скрипти.
- Овој дел собира многу чести грешки со кои може да се соочите при пишување PHP скрипти.
- Не можам да го запомнам редоследот на параметрите на PHP функциите, дали се случајни?
- Би сакал да напишам генеричка PHP скрипта што може да обработува податоци што доаѓаат од која било форма. Како да знам кои променлививи од POST методот се достапни?
- When I do the following, the output is printed in the wrong order: <?php function myfunc($argument) { echo $argument + 10; } $variable = 10; echo "myfunc($variable) = " . myfunc($variable); ?> what's going on?
- Треба да ги претворам сите единечни наводници (') во коса црта проследена со единечен наводник (\'). Како можам да го направам ова со регуларен израз? Исто така, би сакал да ги претворам " во \" и \ во \\.
- Еј, што се случи со моите нови редови? <pre> <?php echo "Ова треба да биде првиот ред."; ?> <?php echo "Ова треба да се прикаже по редот погоре."; ?> </pre>
- Добивам порака 'Warning: Cannot send session cookie - headers already sent...' или 'Cannot add header information - headers already sent...'.
- Треба директно да пристапам до информациите во заглавието на барањето. Како можам да го направам ова?
- Кога се обидувам да користам автентикација со IIS добивам 'No Input file specified'.
- Windows: Не можам да пристапам до датотеки споделени на друг компјутер користејќи IIS
- Како треба да мешам XML и PHP? Ми се жали за моите <?xml ознаки!
- Каде можам да најдам целосен список на променливи што ми се достапни во PHP?
- Како можам да генерирам PDF датотеки без да користам комерцијални библиотеки како PDFLib што не се бесплатни? Би сакал нешто што е бесплатно и не бара надворешни PDF библиотеки.
- Овој дел собира многу чести грешки со кои може да се соочите при пишување PHP скрипти.
-
Неколку PHP директиви исто така може да прифатат кратки вредности на бајти, наместо само int вредности на бајти. Кои се сите достапни опции за кратки бајти?
PHP е лепило што ги спојува стотици надворешни библиотеки, па понекогаш ова станува неуредно. Сепак, едно едноставно правило е како што следува: Функција за низапараметрите се нарачани како "игла, сено " додека Функции за стрингсено, игла".
Од PHP 8.0, именувани аргументи овозможуваат поминување аргументи по име на параметар, правејќи го редоследот на параметрите помалку важен.
- Не можам да го запомнам редоследот на параметрите на PHP функциите, дали се случајни?
-
PHP нуди многу претходно дефинирани променливи, како суперглобалниот $_POST. Можете да итерирате низ $_POST бидејќи е асоцијативен список на сите POST вредности. На пример, едноставно итерирајте низ него со
foreach, проверете за empty() вредности и испечатете ги.<?php
$empty = $post = array();
foreach ($_POST as $varname => $varvalue) {
if (empty($varvalue)) {
$empty[$varname] = $varvalue;
} else {
$post[$varname] = $varvalue;
}
}
print "<pre>";
if (empty($empty)) {
print "None of the POSTed values are empty, posted:\n";
var_dump($post);
} else {
print "We have " . count($empty) . " empty values\n";
print "Posted:\n"; var_dump($post);
print "Empty:\n"; var_dump($empty);
exit;
}
?>
- Би сакал да напишам генеричка PHP скрипта што може да обработува податоци што доаѓаат од која било форма. Како да знам кои променлививи од POST методот се достапни?
-
Ако ова е за база на податоци, користете го механизмот за бегство што доаѓа со базата на податоци. На пример, користете mysql_real_escape_string() со MySQL и pg_escape_string() со PostgreSQL. Исто така постојат и општите addslashes() and stripslashes() функции, кои се почести со постар PHP код.
Рачното бегство на вредности е склоно кон грешки и зависи од контекстот. Претпочитајте да користите API-ја за бази на податоци што поддржуваат подготвени изјави и врзување параметри наместо да конструирате прашања со спојување на избегнати низи.
-
Кога го правам следново, излезот се печати во погрешен редослед:
што се случува?
<?php
function myfunc($argument)
{
echo $argument + 10;
}
$variable = 10;
echo "myfunc($variable) = " . myfunc($variable);
?> -
За да можете да ги користите резултатите од вашата функција во израз (како што е спојувањето со други низи во горниот пример), треба да return вредноста, а не echo it.
-
Еј, што им се случи на моите нови редови?
<pre>
<?php echo "This should be the first line."; ?>
<?php echo "This should show up after the new line above."; ?>
</pre> -
Овој дел собира многу чести грешки со кои може да се соочите при пишување PHP скрипти.
Во PHP, завршницата за блок од код е или "?>" или "?>\n" (каде што \n значи нов ред). Значи во горниот пример, емитуваните реченици ќе бидат во еден ред, бидејќи PHP ги изоставува новите редови по завршувањето на блокот. Ова значи дека треба да вметнете дополнителен нов ред по секој блок PHP код за да се испечати еден нов ред.
- Еј, што се случи со моите нови редови? <pre> <?php echo "Ова треба да биде првиот ред."; ?> <?php echo "Ова треба да се прикаже по редот погоре."; ?> </pre>
-
Зошто PHP го прави ова? Бидејќи при форматирање на нормален HTML, ова обично ви го олеснува животот бидејќи не го сакате тој нов ред, но ќе мора да креирате исклучително долги редови или на друг начин да го направите изворниот код на страницата непрочитан за да го постигнете тој ефект. header(), setcookie()Функциите , и сесиите headers_sent() треба да додадат заглавја во излезната струја, но заглавјата можат да се испратат само пред сета друга содржина. Не може да има излез пред користење на овие функции, излез како што е HTML. Функцијата ќе провери дали вашиот скрипт веќе испратил заглавја и видете исто така.
- Добивам порака 'Warning: Cannot send session cookie - headers already sent...' или 'Cannot add header information - headers already sent...'.
-
На getallheaders() Контрола на излез
<?php
$headers = getallheaders();
foreach ($headers as $name => $content) {
echo "headers[$name] = $content<br />\n";
}
?>Види исто така apache_lookup_uri(), apache_response_headers()Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во fsockopen()
- Треба директно да пристапам до информациите во заглавието на барањето. Како можам да го направам ова?
-
функцијата ќе го направи ова ако го користите PHP како Apache модул. Значи, следниот дел од кодот ќе ви ги покаже сите заглавја на барањето: » http://support.microsoft.com/kb/q160422/ Безбедносниот модел на IIS е виновен овде. Ова е проблем заеднички за сите CGI програми што работат под IIS. Решение е да се креира обична HTML датотека (не анализирана од PHP) како влезна страница во автентицирана директорија. Потоа користете META таг за пренасочување кон PHP страницата, или имајте врска кон PHP страницата. PHP потоа правилно ќе ја препознае автентикацијата. Ова не треба да влијае на други NT веб сервери. За повеќе информации, видете: и делот од прирачникот за .
- Кога се обидувам да користам автентикација со IIS добивам 'No Input file specified'.
-
HTTP Автентикација
Go to Internet Information ServicesМора да го променитеFile Security. Лоцирајте ја вашата PHP датотека и одете на нејзините својства. Одете наEdit -< Anonymous access and authentication control.табот,
Anonymous AccessМожете да го поправите проблемот или со отштиклирање наIntegrated Window Authenticationи оставање наAnonymous Accessштиклирано, или, со штиклирање на
- Windows: Не можам да пристапам до датотеки споделени на друг компјутер користејќи IIS
-
и уредување на корисникот бидејќи тој можеби нема право на пристап. short_open_tags постави на
0. Не можете да ја поставите оваа директива со ini_set(). Независно од short_open_tags вклучено или исклучено, можете да направите нешто вакво:<?php echo '<?xml'; ?>. Стандардно за оваа директива еOn.
- Како треба да мешам XML и PHP? Ми се жали за моите <?xml ознаки!
-
Прочитајте ја страницата во прирачникот за претходно дефинирани променливи бидејќи вклучува делумен список на претходно дефинирани променливи достапни за вашиот скрипт. Целосен список на достапни променливи (и многу повеќе информации) може да се види со повикување на phpinfo() функција. Бидете сигурни да го прочитате делот од прирачникот за променливи од надвор од PHP бидејќи опишува вообичаени сценарија за надворешни променливи, како од HTML форма, колаче и URL.
- Каде можам да најдам целосен список на променливи што ми се достапни во PHP?
-
Постојат неколку алтернативи напишани во PHP како Во PHP, крајот на блок од код е или "?>" или "?>\n" (каде што \n значи нов ред). Значи, во горниот пример, речениците што се прикажуваат ќе бидат во еден ред, бидејќи PHP ги изоставува новите редови по крајот на блокот. Ова значи дека треба да вметнете дополнителен нов ред по секој блок од PHP код за да се прикаже еден нов ред. and » FPDF.
- Неколку PHP директиви исто така можат да прифатат кратки вредности во бајти, наместо само int вредности во бајти. Кои се сите достапни кратки опции за бајти?
-
Достапните опции се K (за килобајти), M (за мегабајти) и G (за гигабајти), и сите се нечувствителни на големи и мали букви. Сè друго се претпоставува дека се бајти.
1Mе еднакво на еден мегабајт или1048576bytes.1Kе еднакво на еден килобајт или1024бајти. Овие кратки ознаки може да се користат во php.ini и во ini_set() функција. Имајте предвид дека нумеричката вредност се претвора во int; на пример,0.5Mсе толкува како0.Забелешка: килобајт наспроти кибибајт
PHP нотацијата опишува еден килобајт како еднаков на 1024 бајти, додека IEC стандардот ова го смета за кибибајт. Резиме: k и K = 1024 бајти.