Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проверка на возраст

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Нужная проверка на возраст перед входом на сайт
zaratustra25
Отправлено: 08 Декабря, 2015 - 23:20:18
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




Доброго времени суток, если кто сможет помочь тому кто только нюхать php начинает буду безумно благодарен. Нужна проверка на возраст перед входом на сайт. Вся проверка состоит из четырех выпадающих списков (день, месяц, год рождения, страна) и кнопки подтвердить. Как оформить верстку с этим проблем нет. Проблема как раз в php коде, я так понимаю что он должен посчитать есть ли пользователю 21 год и если да - пустить на сайт, если нет - дать ошибку. Искал в рунете, на зарубежных сайтах, не нашел того что нужно, а если что то и находил то из за мизерного опыта просто не мог нормально прикрутить к сайту и все начиналось сначала, редко прошу помощи, стараясь гуглом и руками решить проблему, но здесь не выходит
 
 Top
dcc0
Отправлено: 09 Декабря, 2015 - 02:29:18
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




Покажите, что уде есть html форму

Вообще все должно быть очень просто
Что-то вроде
if($_POST['age'] < 21) {
echo 'ошибка! Вам нет 21';


}
else {
echo 'ok';
}


-----
Март 2021. Бросил программирование
 
 Top
lastdays
Отправлено: 09 Декабря, 2015 - 09:55:51
Post Id



Частый гость


Покинул форум
Сообщений всего: 221
Дата рег-ции: Март 2013  


Помог: 7 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. function getyeardiff($bday){
  4.     $today = time();
  5.     $arr1 = getdate($bday);
  6.     $arr2 = getdate($today);
  7.     if((int)date('md', $today) >= (int)date('md', $bday) ) {
  8.         $t = 1;
  9.     } else {
  10.         $t = 0;
  11.     }
  12.     return ($arr2['year'] - $arr1['year'] - 1) + $t;
  13. }
  14.  
  15. if ( isset($_POST["date_year"] , $_POST["date_month"], $_POST["date_day"]) )
  16. {
  17.  echo 'Вам: '.getyeardiff(mktime(0, 0, 0, $_POST["date_month"], $_POST["date_day"], $_POST["date_year"]));
  18. }
  19.  
  20.  
  21. ?>
  22.  
  23.  
  24.  


CODE (html):
скопировать код в буфер обмена
  1.  
  2. <form action="" method="post">
  3.    Год   <input type="text" name="date_year" value="1990">
  4.    Месяц <input type="text" name="date_month" value="12">
  5.    День  <input type="text" name="date_day" value="30">
  6.    <input type="submit">
  7. </form>
  8.  


Нужные проверки ставите сами. Для примера пойдет)
 
 Top
zaratustra25
Отправлено: 09 Декабря, 2015 - 11:19:59
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




вот что имею на данный момент(приведу полный код вдруг пригодится кому): скрипт исправно считает возраст, но вот по поводу ошибки, как ее прикрутить как советовал dcc0? то есть принцип я понял что если меньше 21 вывести вот это, если больше - вот это, а вот как заставить работать?)

я код который должен давать ошибку вставил а он пишет постоянно вам нет 21 даже если есть (понимаю что я виноват)

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2.  
  3. /**
  4.  * Template Name: age_verify
  5.  *
  6.  
  7.  */
  8.  
  9. get_header(); ?>
  10.  
  11. <?PHP
  12. function getyeardiff($bday){
  13.    $today = time();
  14.    $arr1 = getdate($bday);
  15.    $arr2 = getdate($today);
  16.    if((int)date('md', $today) >= (int)date('md', $bday) ) {
  17.        $t = 1;
  18.    } else {
  19.        $t = 0;
  20.    }
  21.    return ($arr2['year'] - $arr1['year'] - 1) + $t;
  22. }
  23.  
  24. if ( isset($_POST["date_year"] , $_POST["date_month"], $_POST["date_day"]) )
  25. {
  26. echo 'Вам: '.getyeardiff(mktime(0, 0, 0, $_POST["date_month"], $_POST["date_day"], $_POST["date_year"]));
  27. }
  28.  
  29.  
  30.  
  31.  
  32. ?>
  33.  
  34.  <?php  if($_POST['age'] < 21) {
  35. echo 'ошибка! Вам нет 21';
  36.  
  37.  
  38. }
  39. else {
  40. echo 'ok';
  41. }
  42.   ?>
  43.  
  44. <form action="" method="post">
  45.    Год  
  46.    
  47.    <div class="year_select">
  48.    <select name="date_year">
  49. <option value="-1">year</option>
  50. <option value="2000">2000</option>
  51. <option value="1999">1999</option>
  52. <option value="1998">1998</option>
  53. <option value="1997">1997</option>
  54. <option value="1996">1996</option>
  55. <option value="1995">1995</option>
  56. <option value="1994">1994</option>
  57. <option value="1993">1993</option>
  58. <option value="1992">1992</option>
  59. <option value="1991">1991</option>
  60. <option value="1990">1990</option>
  61. <option value="1989">1989</option>
  62. <option value="1988">1988</option>
  63. <option value="1987">1987</option>
  64. <option value="1986">1986</option>
  65. <option value="1985">1985</option>
  66. <option value="1984">1984</option>
  67. <option value="1983">1983</option>
  68. <option value="1982">1982</option>
  69. <option value="1981">1981</option>
  70. <option value="1980">1980</option>
  71. <option value="1979">1979</option>
  72. <option value="1978">1978</option>
  73. <option value="1977">1977</option>
  74. <option value="1976">1976</option>
  75. <option value="1975">1975</option>
  76. <option value="1974">1974</option>
  77. <option value="1973">1973</option>
  78. <option value="1972">1972</option>
  79. <option value="1971">1971</option>
  80. <option value="1970">1970</option>
  81. <option value="1969">1969</option>
  82. <option value="1968">1968</option>
  83. <option value="1967">1967</option>
  84. <option value="1966">1966</option>
  85. <option value="1965">1965</option>
  86. <option value="1964">1964</option>
  87. <option value="1963">1963</option>
  88. <option value="1962">1962</option>
  89. <option value="1961">1961</option>
  90. <option value="1960">1960</option>
  91. <option value="1959">1959</option>
  92. <option value="1958">1958</option>
  93. <option value="1957">1957</option>
  94. <option value="1956">1956</option>
  95. <option value="1955">1955</option>
  96. <option value="1954">1954</option>
  97. <option value="1953">1953</option>
  98. <option value="1952">1952</option>
  99. <option value="1951">1951</option>
  100. <option value="1950">1950</option>
  101. <option value="1949">1949</option>
  102. <option value="1948">1948</option>
  103. <option value="1947">1947</option>
  104. <option value="1946">1946</option>
  105. <option value="1945">1945</option>
  106. <option value="1944">1944</option>
  107. <option value="1943">1943</option>
  108. <option value="1942">1942</option>
  109. <option value="1941">1941</option>
  110. <option value="1940">1940</option>
  111. <option value="1939">1939</option>
  112. <option value="1938">1938</option>
  113. <option value="1937">1937</option>
  114. <option value="1936">1936</option>
  115. <option value="1935">1935</option>
  116. <option value="1934">1934</option>
  117. <option value="1933">1933</option>
  118. <option value="1932">1932</option>
  119. <option value="1931">1931</option>
  120. <option value="1930">1930</option>
  121. <option value="1929">1929</option>
  122. <option value="1928">1928</option>
  123. <option value="1927">1927</option>
  124. <option value="1926">1926</option>
  125. <option value="1925">1925</option>
  126. <option value="1924">1924</option>
  127. <option value="1923">1923</option>
  128. <option value="1922">1922</option>
  129. <option value="1921">1921</option>
  130. <option value="1920">1920</option>
  131. <option value="1919">1919</option>
  132. <option value="1918">1918</option>
  133. <option value="1917">1917</option>
  134. <option value="1916">1916</option>
  135. <option value="1915">1915</option>
  136. <option value="1914">1914</option>
  137. <option value="1913">1913</option>
  138. <option value="1912">1912</option>
  139. <option value="1911">1911</option>
  140. <option value="1910">1910</option>
  141.  
  142. </select>
  143. </div>
  144.  
  145.  
  146.  
  147.  Месяц <div class="month_select">
  148.  
  149.  <select name="date_month">
  150. <option value="-1">month</option>
  151. <option value="1">January</option>
  152. <option value="2">February</option>
  153. <option value="3">March</option>
  154. <option value="4">April</option>
  155. <option value="5">May</option>
  156. <option value="6">June</option>
  157. <option value="7">July</option>
  158. <option value="8">August</option>
  159. <option value="9">September</option>
  160. <option value="10">October</option>
  161. <option value="11">November</option>
  162. <option value="12">December</option>
  163. </select>
  164. </div>
  165.  
  166.  
  167.  
  168.  
  169.  
  170.    День     <div class="day_select">
  171.   <select name="date_day">
  172.  
  173. <option value="-1">day</option>
  174. <option value="1">1</option>
  175. <option value="2">2</option>
  176. <option value="3">3</option>
  177. <option value="4">4</option>
  178. <option value="5">5</option>
  179. <option value="6">6</option>
  180. <option value="7">7</option>
  181. <option value="8">8</option>
  182. <option value="9">9</option>
  183. <option value="10">10</option>
  184. <option value="11">11</option>
  185. <option value="12">12</option>
  186. <option value="13">13</option>
  187. <option value="14">14</option>
  188. <option value="15">15</option>
  189. <option value="16">16</option>
  190. <option value="17">17</option>
  191. <option value="18">18</option>
  192. <option value="19">19</option>
  193. <option value="20">20</option>
  194. <option value="21">21</option>
  195. <option value="22">22</option>
  196. <option value="23">23</option>
  197. <option value="24">24</option>
  198. <option value="25">25</option>
  199. <option value="26">26</option>
  200. <option value="27">27</option>
  201. <option value="28">28</option>
  202. <option value="29">29</option>
  203. <option value="30">30</option>
  204. <option value="31">31</option>
  205.  
  206. </select>
  207. </div>
  208.  
  209.  
  210. Country
  211. <div class="country_select">
  212. <select>
  213.                 <option value="21:AF">select your country</option>
  214.         <option value="21:AF">Afghanistan</option>
  215.                 <option value="18:AL">Albania</option>
  216.                 <option value="18:DZ">Algeria</option>
  217.                 <option value="18:AD">Andorra</option>
  218.                 <option value="18:AO">Angola</option>
  219.                 <option value="18:AG">Antigua and Barbuda</option>
  220.                 <option value="18:AR">Argentina</option>
  221.                 <option value="18:AM">Armenia</option>
  222.                 <option value="18:AU">Australia</option>
  223.                 <option value="18:AT">Austria</option>
  224.                 <option value="21:AZ">Azerbaijan</option>
  225.                 <option value="18:BS">Bahamas</option>
  226.                 <option value="21:BH">Bahrain</option>
  227.                 <option value="21:BD">Bangladesh</option>
  228.                 <option value="18:BB">Barbados</option>
  229.                 <option value="18:BY">Belarus</option>
  230.                 <option value="18:NL">Belgium (Dutch)</option>
  231.                 <option value="18:BE">Belgium (French)</option>
  232.                 <option value="18:BZ">Belize</option>
  233.                 <option value="18:BJ">Benin</option>
  234.                 <option value="18:BT">Bhutan</option>
  235.                 <option value="18:BO">Bolivia</option>
  236.                 <option value="18:BA">Bosnia and Herzegovina</option>
  237.                 <option value="18:BW">Botswana</option>
  238.                 <option value="18:BR">Brazil</option>
  239.                 <option value="21:BN">Brunei Darussalam</option>
  240.                 <option value="18:BG">Bulgaria</option>
  241.                 <option value="18:BF">Burkina Faso</option>
  242.                 <option value="18:BI">Burundi</option>
  243.                 <option value="18:KH">Cambodia</option>
  244.                 <option value="21:CM">Cameroon (English)</option>
  245.                 <option value="18:CMFR">Cameroon (French)</option>
  246.                 <option value="18:CMFR">Cameroon (French)</option>
  247.                 <option value="19:CA">Canada (English)</option>
  248.                 <option value="19:CAFR">Canada (French)</option>
  249.                 <option value="18:CV">Cape Verde</option>
  250.                 <option value="18:CF">Central African Republic</option>
  251.                 <option value="18:TD">Chad</option>
  252.                 <option value="18:CL">Chile</option>
  253.                 <option value="18:CN">China</option>
  254.                 <option value="18:CO">Colombia</option>
  255.                 <option value="18:KM">Comoros</option>
  256.                 <option value="18:CG">Congo</option>
  257.                 <option value="18:CK">Cook Islands</option>
  258.                 <option value="18:CR">Costa Rica</option>
  259.                 <option value="18:CI">Cote D'ivoire</option>
  260.                 <option value="18:HR">Croatia</option>
  261.                 <option value="18:CU">Cuba</option>
  262.                 <option value="18:CY">Cyprus</option>
  263.                 <option value="18:CZ">Czech Republic</option>
  264.                 <option value="18:DK">Denmark</option>
  265.                 <option value="18:DJ">Djibouti</option>
  266.                 <option value="18:DM">Dominica</option>
  267.                 <option value="18:DO">Dominican Republic</option>
  268.                 <option value="18:DC">Dr Congo</option>
  269.                 <option value="18:ET">East Timor</option>
  270.                 <option value="18:EC">Ecuador</option>
  271.                 <option value="21:EG">Egypt</option>
  272.                 <option value="18:SV">El Salvador</option>
  273.                 <option value="18:GQ">Equatorial Guinea</option>
  274.                 <option value="18:ER">Eritrea</option>
  275.                 <option value="18:EE">Estonia</option>
  276.                 <option value="21:ET">Ethiopia</option>
  277.                 <option value="18:FJ">Fiji</option>
  278.                 <option value="18:FI">Finland</option>
  279.                 <option value="18:FR">France</option>
  280.                 <option value="18:GA+">Gabon</option>
  281.                 <option value="18:GM+">Gambia</option>
  282.                 <option value="18:GE">Georgia</option>
  283.                 <option value="18:DE">Germany</option>
  284.                 <option value="18:GH">Ghana</option>
  285.                 <option value="18:GB">Great Britain</option>
  286.                 <option value="18:GR">Greece</option>
  287.                 <option value="18:GD">Grenada</option>
  288.                 <option value="18:GT">Guatemala</option>
  289.                 <option value="18:GN">Guinea</option>
  290.                 <option value="18:GW">Guinea-Bissau</option>
  291.                 <option value="18:GY">Guyana</option>
  292.                 <option value="18:HT">Haiti</option>
  293.                 <option value="21:HN">Honduras</option>
  294.                 <option value="18:HK">Hong Kong</option>
  295.                 <option value="18:HU">Hungary</option>
  296.                 <option value="18:IS">Iceland</option>
  297.                 <option value="25:IN">India</option>
  298.                 <option value="21:ID">Indonesia</option>
  299.                 <option value="21:IR">Iran</option>
  300.                 <option value="21:IQ">Iraq</option>
  301.                 <option value="18:IE">Ireland</option>
  302.                 <option value="18:IL">Israel</option>
  303.                 <option value="18:IT">Italy</option>
  304.                 <option value="18:JM">Jamaica</option>
  305.                 <option value="20:JP">Japan</option>
  306.                 <option value="21:JO">Jordan</option>
  307.                 <option value="21:KZ">Kazakhstan</option>
  308.                 <option value="18:KE">Kenya</option>
  309.                 <option value="18:KI">Kiribati</option>
  310.                 <option value="21:KW">Kuwait</option>
  311.                 <option value="21:KG">Kyrgyzstan</option>
  312.                 <option value="18:LA">Lao</option>
  313.                 <option value="18:LV">Latvia</option>
  314.                 <option value="18:LB">Lebanon</option>
  315.                 <option value="18:LS">Lesotho</option>
  316.                 <option value="18:LR">Liberia</option>
  317.                 <option value="21:LY">Libya</option>
  318.                 <option value="18:LI">Liechtenstein</option>
  319.                 <option value="18:LT">Lithuania</option>
  320.                 <option value="18:LU">Luxembourg</option>
  321.                 <option value="18:MK">Macedonia, Fmr Yugoslav Republic</option>
  322.                 <option value="18:MG">Madagascar</option>
  323.                 <option value="18:MW">Malawi</option>
  324.                 <option value="18:MY+">Malaysia</option>
  325.                 <option value="18:MV+">Maldives</option>
  326.                 <option value="18:ML">Mali</option>
  327.                 <option value="18:MT">Malta</option>
  328.                 <option value="18:MH">Marshall Islands</option>
  329.                 <option value="18:MR">Mauritania</option>
  330.                 <option value="18:MU">Mauritius</option>
  331.                 <option value="18:MX">Mexico</option>
  332.                 <option value="18:FM">Micronesia</option>
  333.                 <option value="18:MD">Moldova, Republic Of</option>
  334.                 <option value="18:MC">Monaco</option>
  335.                 <option value="18:MN">Mongolia</option>
  336.                 <option value="18:MA">Morocco</option>
  337.                 <option value="18:MZ">Mozambique</option>
  338.                 <option value="18:MM">Myanmar</option>
  339.                 <option value="18:NA">Namibia</option>
  340.                 <option value="18:NR">Nauru</option>
  341.                 <option value="21:NP">Nepal</option>
  342.                 <option value="18:NZ">New Zealand</option>
  343.                 <option value="18:NI">Nicaragua</option>
  344.                 <option value="18:NE">Niger</option>
  345.                 <option value="18:NG">Nigeria</option>
  346.                 <option value="18:NK">North Korea</option>
  347.                 <option value="18:NO">Norway</option>
  348.                 <option value="21:OM">Oman</option>
  349.                 <option value="21:PK">Pakistan</option>
  350.                 <option value="21:PW">Palau</option>
  351.                 <option value="18:PA">Panama</option>
  352.                 <option value="18:PG">Papua New Guinea</option>
  353.                 <option value="20:PY">Paraguay</option>
  354.                 <option value="18:PE">Peru</option>
  355.                 <option value="18:PH">Philippines</option>
  356.                 <option value="18:PL">Poland</option>
  357.                 <option value="18:PT">Portugal</option>
  358.                 <option value="18:QA+">Qatar</option>
  359.                 <option value="18:RO">Romania</option>
  360.                 <option value="18:RU">Russian Federation</option>
  361.                 <option value="18:RW">Rwanda</option>
  362.                 <option value="18:KN">Saint Kitts and Nevis</option>
  363.                 <option value="18:LC">Saint Lucia</option>
  364.                 <option value="18:VC">Saint Vincent and The Grenadines</option>
  365.                 <option value="21:WS">Samoa</option>
  366.                 <option value="18:SM">San Marino</option>
  367.                 <option value="18:ST">Sao Tome And Principe</option>
  368.                 <option value="21:SA">Saudi Arabia</option>
  369.                 <option value="18:SN">Senegal</option>
  370.                 <option value="18:CS">Serbia and Montenegro</option>
  371.                 <option value="18:SC">Seychelles</option>
  372.                 <option value="18:SL">Sierra Leone</option>
  373.                 <option value="18:SG">Singapore</option>
  374.                 <option value="18:SK">Slovakia</option>
  375.                 <option value="18:SI">Slovenia</option>
  376.                 <option value="21:SB">Solomon Islands</option>
  377.                 <option value="18:SO">Somalia</option>
  378.                 <option value="18:ZA">South Africa</option>
  379.                 <option value="19:KR">South Korea</option>
  380.                 <option value="18:ES">Spain</option>
  381.                 <option value="18:LK">Sri Lanka</option>
  382.                 <option value="21:SD">Sudan</option>
  383.                 <option value="18:SR">Suriname</option>
  384.                 <option value="18:SZ">Swaziland</option>
  385.                 <option value="21:SE">Sweden</option>
  386.                 <option value="18:CH">Switzerland</option>
  387.                 <option value="21:SY">Syria</option>
  388.                 <option value="18:TW">Taiwan</option>
  389.                 <option value="21:TJ+">Tajikistan</option>
  390.                 <option value="18:TZ">Tanzania</option>
  391.                 <option value="18:TH">Thailand</option>
  392.                 <option value="18:TG">Togo</option>
  393.                 <option value="18:TO">Tonga</option>
  394.                 <option value="18:TT">Trinidad and Tobago</option>
  395.                 <option value="18:TN">Tunisia</option>
  396.                 <option value="18:TR">Turkey</option>
  397.                 <option value="21:TM">Turkmenistan</option>
  398.                 <option value="18:TV">Tuvalu</option>
  399.                 <option value="18:UG">Uganda</option>
  400.                 <option value="18:UA">Ukraine</option>
  401.                 <option value="21:AE+">United Arab Emirates</option>
  402.                 <option value="18:UY">Uruguay</option>
  403.                 <option value="21:US">USA (English)</option>
  404.                 <option value="21:ESUS">USA (Spanish)</option>
  405.                 <option value="21:UZ">Uzbekistan</option>
  406.                 <option value="18:VU">Vanuatu</option>
  407.                 <option value="18:VE">Venezuela</option>
  408.                 <option value="18:VN">Vietnam</option>
  409.                 <option value="21:YE">Yemen</option>
  410.                 <option value="18:ZM">Zambia</option>
  411.                 <option value="18:ZW">Zimbabwe</option>
  412. </select>      
  413.  
  414. </div>
  415.  
  416.  
  417.  
  418.  
  419.    <input type="submit">
  420.    
  421.  
  422.    
  423.    
  424. </form>
  425.  
  426.  
  427.  <?php get_footer(); ?>

(Отредактировано автором: 09 Декабря, 2015 - 11:24:29)

 
 Top
popover
Отправлено: 09 Декабря, 2015 - 12:20:20
Post Id



Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Дек. 2015  


Помог: 2 раз(а)




PHP:
скопировать код в буфер обмена
  1. $birthday = new \DateTime();
  2. $birthday->setDate(1994, 12, 8);
  3.  
  4. $current = new \DateTime();
  5. $diff = $current->diff($birthday);
  6. var_dump($diff, $diff->y < 21);
 
 Top
zaratustra25
Отправлено: 09 Декабря, 2015 - 13:09:11
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




popover пишет:
PHP:
скопировать код в буфер обмена
  1. $birthday = new \DateTime();
  2. $birthday->setDate(1994, 12, 8);
  3.  
  4. $current = new \DateTime();
  5. $diff = $current->diff($birthday);
  6. var_dump($diff, $diff->y < 21);


спасибо огромное что откликнулись и не прошли мимо) простите за наглость Растерялся но не могли бы вы написать куда этот код нужно вставить Закатив глазки если все заработает то получится отличная подробная тема с готовым простым возрастным контролем которая будет служить новичкам
 
 Top
popover
Отправлено: 09 Декабря, 2015 - 13:53:20
Post Id



Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Дек. 2015  


Помог: 2 раз(а)




CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2.  
  3. get_header();
  4.  
  5. if ($_POST && isset($_POST["date_year"], $_POST["date_month"], $_POST["date_day"]))
  6. {
  7.    $birthday = null;
  8.    $dateDiff = null;
  9.  
  10.    try
  11.    {
  12.        $birthday = new \DateTime();
  13.        $birthday->setDate($_POST["date_year"], $_POST["date_month"], $_POST["date_day"]);
  14.  
  15.        $current = new \DateTime();
  16.        $dateDiff = $current->diff($birthday);
  17.    }
  18.    catch (\Exception $e)
  19.    {
  20.    }
  21.  
  22.    if ($birthday instanceof \DateTime && $dateDiff instanceof \DateInterval)
  23.    {
  24.        if ($dateDiff->y >= 21)
  25.        {
  26.            echo $dateDiff->y . ' years old';
  27.        }
  28.        else
  29.        {
  30.            echo 'Error. You very young';
  31.        }
  32.    }
  33. }
  34.  
  35. ?>
  36.  
  37.     <form method="post">
  38.         <select name="date_year">
  39.             <option disabled selected>Year</option>
  40.             <? for ($i = 2000; $i >= 1910; --$i) : ?>
  41.                 <option value="<?=$i?>"><?=$i?></option>
  42.             <? endfor ?>
  43.         </select>
  44.  
  45.         <select name="date_month">
  46.             <option disabled selected>Month</option>
  47.             <? for ($i = 1; $i <= 12; ++$i) : ?>
  48.                 <option value="<?=$i?>"><?=$i?></option>
  49.             <? endfor ?>
  50.         </select>
  51.  
  52.         <select name="date_day">
  53.             <option disabled selected>Day</option>
  54.             <? for ($i = 1; $i <= 31; ++$i) : ?>
  55.                 <option value="<?=$i?>"><?=$i?></option>
  56.             <? endfor ?>
  57.         </select>
  58.  
  59.         <button type="submit">Send</button>
  60.     </form>
  61.  
  62. <?
  63.  
  64. get_footer();
 
 Top
zaratustra25
Отправлено: 09 Декабря, 2015 - 14:19:03
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




popover пишет:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2.  
  3. get_header();
  4.  
  5. if ($_POST && isset($_POST["date_year"], $_POST["date_month"], $_POST["date_day"]))
  6. {
  7.    $birthday = null;
  8.    $dateDiff = null;
  9.  
  10.    try
  11.    {
  12.        $birthday = new \DateTime();
  13.        $birthday->setDate($_POST["date_year"], $_POST["date_month"], $_POST["date_day"]);
  14.  
  15.        $current = new \DateTime();
  16.        $dateDiff = $current->diff($birthday);
  17.    }
  18.    catch (\Exception $e)
  19.    {
  20.    }
  21.  
  22.    if ($birthday instanceof \DateTime && $dateDiff instanceof \DateInterval)
  23.    {
  24.        if ($dateDiff->y >= 21)
  25.        {
  26.            echo $dateDiff->y . ' years old';
  27.        }
  28.        else
  29.        {
  30.            echo 'Error. You very young';
  31.        }
  32.    }
  33. }
  34.  
  35. ?>
  36.  
  37.     <form method="post">
  38.         <select name="date_year">
  39.             <option disabled selected>Year</option>
  40.             <? for ($i = 2000; $i >= 1910; --$i) : ?>
  41.                 <option value="<?=$i?>"><?=$i?></option>
  42.             <? endfor ?>
  43.         </select>
  44.  
  45.         <select name="date_month">
  46.             <option disabled selected>Month</option>
  47.             <? for ($i = 1; $i <= 12; ++$i) : ?>
  48.                 <option value="<?=$i?>"><?=$i?></option>
  49.             <? endfor ?>
  50.         </select>
  51.  
  52.         <select name="date_day">
  53.             <option disabled selected>Day</option>
  54.             <? for ($i = 1; $i <= 31; ++$i) : ?>
  55.                 <option value="<?=$i?>"><?=$i?></option>
  56.             <? endfor ?>
  57.         </select>
  58.  
  59.         <button type="submit">Send</button>
  60.     </form>
  61.  
  62. <?
  63.  
  64. get_footer();




Спасибо Радость но выпадающие меню пусты Огорчение беда Огорчение
 
 Top
popover
Отправлено: 09 Декабря, 2015 - 14:29:32
Post Id



Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Дек. 2015  


Помог: 2 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. get_header();
  4.  
  5. if ($_POST && isset($_POST["date_year"], $_POST["date_month"], $_POST["date_day"]))
  6. {
  7.     $birthday = null;
  8.     $dateDiff = null;
  9.  
  10.     try
  11.     {
  12.         $birthday = new \DateTime();
  13.         $birthday->setDate($_POST["date_year"], $_POST["date_month"], $_POST["date_day"]);
  14.  
  15.         $current = new \DateTime();
  16.         $dateDiff = $current->diff($birthday);
  17.     }
  18.     catch (\Exception $e)
  19.     {
  20.     }
  21.  
  22.     if ($birthday instanceof \DateTime && $dateDiff instanceof \DateInterval)
  23.     {
  24.         if ($dateDiff->y >= 21)
  25.         {
  26.             echo $dateDiff->y . ' years old';
  27.         }
  28.         else
  29.         {
  30.             echo 'Error. You very young';
  31.         }
  32.     }
  33. }
  34.  
  35. ?>
  36.  
  37.     <form method="post">
  38.         <select name="date_year">
  39.             <option disabled selected>Year</option>
  40.             <?PHP for ($i = 2000; $i >= 1910; --$i) : ?>
  41.                 <option value="<?PHP echo $i?>"><?PHP echo $i?></option>
  42.             <?PHP endfor ?>
  43.         </select>
  44.  
  45.         <select name="date_month">
  46.             <option disabled selected>Month</option>
  47.             <?PHP for ($i = 1; $i <= 12; ++$i) : ?>
  48.                 <option value="<?PHP echo $i?>"><?PHP echo $i?></option>
  49.             <?PHP endfor ?>
  50.         </select>
  51.  
  52.         <select name="date_day">
  53.             <option disabled selected>Day</option>
  54.             <?PHP for ($i = 1; $i <= 31; ++$i) : ?>
  55.                 <option value="<?PHP echo $i?>"><?PHP echo $i?></option>
  56.             <?PHP endfor ?>
  57.         </select>
  58.  
  59.         <button type="submit">Send</button>
  60.     </form>
  61.  
  62. <?PHP
  63.  
  64. get_footer();
 
 Top
zaratustra25
Отправлено: 09 Декабря, 2015 - 14:57:45
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




Спасибо огромное, помогая новичкам Вы растите тех людей которые так же будут помогать когда их уровень будет позволять конечно Закатив глазки пойду заниматься стилизацией и куками (думал спросить но совесть просто не позволяет) дабы не вводить каждый раз. Еще раз большое спасибо) вот и появился код для самых маленьких Радость
 
 Top
popover
Отправлено: 09 Декабря, 2015 - 15:16:01
Post Id



Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Дек. 2015  


Помог: 2 раз(а)




zaratustra25, не спешите. Не во всех месяцах 31 день.
 
 Top
zaratustra25
Отправлено: 09 Декабря, 2015 - 16:01:38
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




popover пишет:
zaratustra25, не спешите. Не во всех месяцах 31 день.


я так понимаю код усложнится?)



окей а как присвоить имена месяцам? то есть

что бы вид такой примерно был
CODE (htmlphp):
скопировать код в буфер обмена
  1. <option value="-1">month</option>
  2. <option value="1">January</option>
  3. <option value="2">February</option>
  4. <option value="3">March</option>
  5. <option value="4">April</option>
  6. <option value="5">May</option>
  7. <option value="6">June</option>
  8. <option value="7">July</option>
  9. <option value="8">August</option>
  10. <option value="9">September</option>
  11. <option value="10">October</option>
  12. <option value="11">November</option>
  13. <option value="12">December</option>
 
 Top
melomaniac
Отправлено: 09 Декабря, 2015 - 16:59:32
Post Id



Новичок


Покинул форум
Сообщений всего: 61
Дата рег-ции: Февр. 2014  


Помог: 0 раз(а)




Цитата:
тому кто только нюхать php начинает


не забываем про http://php.net/manual/en/filter....ers.sanitize.php и т.д.
Хотя это не только новичков касается. Лучше сразу учиться писать безопасный(на сколько это возможно) код Подмигивание
 
 Top
dcc0
Отправлено: 09 Декабря, 2015 - 18:39:13
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




Писал ответ вчера с читалки, хотел добавить потом , но уснул.
Конечно надо проверять на целочисленность int, как написал lastdays
У меня еще, правда, в голове вертелся is_numeric, но не надо, наверно,
раз есть проверка int


-----
Март 2021. Бросил программирование
 
 Top
Russer
Отправлено: 09 Декабря, 2015 - 19:38:16
Post Id


Гость


Покинул форум
Сообщений всего: 91
Дата рег-ции: Февр. 2015  


Помог: 1 раз(а)




Если не ориентироваться IE , то проще будет так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $today_object =  date_create(date('Y-m-d'));
  4. $birthday = filter_input(INPUT_POST, 'birthday', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
  5. $birthday_object =date_create($birthday);
  6. $age_object = date_diff($birthday_object, $today_object);
  7. if (isset($birthday)){
  8.     $age=$age_object->format('%y');
  9. if ($age<21) {
  10.     $error='<b>Вам нет 21 года!</b>';
  11. }
  12. }
  13. ?>
  14. <form action="" method="post">
  15.     <label for="birthday" >Выберите дату рождения:</label> <input name="birthday" type="date" max="2010-01-01">  
  16.     <input type="submit" value="Проверить">
  17. </form>
  18. <?PHP
  19. echo $error;
  20.  
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB