За последние 24 часа нас посетили 25728 программистов и 1726 роботов. Сейчас ищут 882 программиста ...

PHP и ООП

Тема в разделе "PHP для новичков", создана пользователем Fess, 18 авг 2011.

  1. Fess

    Fess Активный пользователь

    С нами с:
    13 июл 2011
    Сообщения:
    21
    Симпатии:
    0
    Доброго времени суток! После переноса на новый хостинг в программе стали вылезать ошибки сценария:

    [​IMG]

    [​IMG]

    CreateKey.php:

    PHP:
    1. <?php
    2. require_once("User.php");
    3.  
    4. $public_key = "-----BEGIN PUBLIC KEY-----
    5. ******
    6. -----END PUBLIC KEY-----
    7. ";
    8.  
    9. ?>
    10. <html>
    11. <head>
    12. ******
    13. </head>
    14. <body style="overflow: hidden;">
    15.     <div id="modalContent" style="width:400px; height:300px; overflow: hidden;">
    16.  
    17.         <a href="" onclick="parent.closeModalWindow(); return false;" class="close_modal">X</a>
    18. <?php
    19.  
    20. if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) :
    21.     do {
    22.         $str = $_POST['sign'];
    23.         $msg = User::DecodeSignature($str);
    24.         if( !empty($msg) )
    25.             break;
    26.         $new_user = new User;
    27.         list( $new_user->id, $new_user->timestamp ) = User::ParseSignature($str);
    28.         if( !isset($new_user->timestamp) ) {
    29.             $msg = $new_user->id;
    30.             break;
    31.         }
    32.         $new_user->person = $_POST['fio'];
    33.         $new_user->email = $_POST['email'];[color=red] //строка 69[/color]
    34.         $new_user->phone = $_POST['phone'];
    35.         $new_user->org = $_POST['org'];
    36.         $new_user->is_admin = array_key_exists('isadmin', $_POST);
    37.         //print_r($new_user);
    38.         $new_user->WriteFile();[color=red] //строка 74[/color]
    39.     } while(0);
    40. ?>
    41.         <p>Ключ инициализирован и зарегистрирован в системе.</p>
    42.         <p>Вставьте административный ключ перед тем как закрыть окно или нажмите
    43.             <a href="javascript:void(0);" onclick="navigate('CreateKey.php'); return false;">подготовка нового ключа</a>.
    44.         </p>
    45. <?php
    46. else : // Not POST
    47. ?>
    48.             <p>Подготовка и регистрация нового ключа. <b>Замените рабочий ключ на новый.</b></p>
    49.             <form method="post" action="CreateKey.php">
    50.                 <input type="hidden" value="" id="sign" name="sign">
    51.                
    52.                 <div class="field">
    53.                     <div class="header">Организация:</div>
    54.                     <div class="content"><input type="text" value="" id="org" name="org"></div>
    55.                 </div>
    56.                 <div class="field">
    57.                     <div class="header">Представитель:</div>
    58.                     <div class="content">
    59.                         <input type="text" value="" id="fio" name="fio">
    60.                         <span class="obligatory">*</span>
    61.                     </div>
    62.                 </div>
    63.                 <div class="field">
    64.                     <div class="header">Телефон:</div>
    65.                     <div class="content"><input type="text" value="" id="phone" name="phone"></div>
    66.                 </div>
    67.                 <div class="field">
    68.                     <div class="header">Эл.почта:</div>
    69.                     <div class="content">
    70.                         <input type="text" value="" id="email" name="email">
    71.                         <span class="obligatory">*</span>
    72.                     </div>
    73.                 </div>
    74.                 <div class="field">
    75.                     <div class="header">Администратор:</div>
    76.                     <div class="content"><input type="checkbox" value="" id="isadmin" name="isadmin" class="chk_box"></div>
    77.                 </div>
    78.                 <div class="field">
    79.                     <div class="header">&nbsp;</div>
    80.                     <div class="content"><input type="button" value="Зарегистрировать" onclick="InitKey();" id="register"></div>
    81.                 </div>
    82.             </form>
    83.             <script type="text/javascript">//<![CDATA[
    84.            
    85.                 var key = '<?= str_replace( "\r\n", "\\n\\\r\n", $public_key ) ?>';
    86.                 parent.external.AutoClosing = 0;
    87.                
    88.                 function InitKey()
    89.                 {
    90.                     var emlVal = trim( document.getElementById( "email" ).value );
    91.                     var fioVal = trim( document.getElementById( "fio" ).value );
    92.                     if ( emlVal.length > 0 && fioVal.length > 0 )
    93.                     {
    94.                         try {
    95.                             parent.external.PublicKey = key;
    96.                         }
    97.                         catch(err) {
    98.                             alert("Ошибка!\n" + err.description );
    99.                             return;
    100.                         }
    101.                         document.getElementById( "sign" ).value = parent.external.Signature;
    102.                        
    103.                         document.forms[0].submit();
    104.                        
    105.                     } else if ( fioVal.length == 0 )
    106.                     {
    107.                         document.getElementById( "fio" ).focus();
    108.                        
    109.                     } else if ( emlVal.length == 0 )
    110.                     {
    111.                         document.getElementById( "email" ).focus();
    112.                     }
    113.                 }
    114.                
    115.                 function trim( val )
    116.                 {
    117.                     return val.replace("^\s*|\s*$", '');
    118.                 }
    119.             //]]></script>
    120. <?php
    121. endif;
    122. ?>
    123.     </div>
    124. </body>
    Подскажите в чем может быть проблема, или хотя б в каком направлении копать
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    а если заглянуть в готовый код html? у тебя там какой-нибудь варнинг вылез и все поехало к ебен*м
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    в разных энтерах в паблик кей, ты видимо его поменял =)

    тут вобще больше никаких переменных нет.

    зайди на страницу с ошибками и найди это место в уже готовом документе в эксплорере через просмотр исходного кода страницы. и там посмотри как выглядит.
     
  4. Fess

    Fess Активный пользователь

    С нами с:
    13 июл 2011
    Сообщения:
    21
    Симпатии:
    0
    Это все работает не через браузер, а через отдельную прогу.

    Без проверки ключа запустил в браузере, вот исходный код:

    HTML:
    1.  
    2.     <link href="Theme/main.css" rel="stylesheet" type="text/css" />
    3.     <style type="text/css">
    4.         .field
    5.         {   width: 400px;
    6.             overflow: hidden;
    7.             margin: 2px 0;
    8.         }
    9.         .field .header
    10.         {   width: 110px;
    11.             float: left;
    12.         }
    13.         .field .content
    14.         {   margin-left: 120px;
    15.         }
    16.         .field .content input
    17.         {   width: 200px;
    18.         }
    19.         .field #register
    20.         {   margin-top: 10px;
    21.         }
    22.         .field .content .chk_box
    23.         {   width: auto;
    24.             margin-left: -5px;
    25.         }
    26.         span.obligatory
    27.         {
    28.             color: red;
    29.         }
    30.        
    31.     </style>
    32. </head>
    33. <body style="overflow: hidden;">
    34.     <div id="modalContent" style="width:400px; height:300px; overflow: hidden;">
    35.         <a href="" onclick="parent.closeModalWindow(); return false;" class="close_modal">X</a>
    36.             <p>Подготовка и регистрация нового ключа. <b>Замените рабочий ключ на новый.</b></p>
    37.             <form method="post" action="CreateKey.php">
    38.                 <input type="hidden" value="" id="sign" name="sign">
    39.                
    40.                 <div class="field">
    41.                     <div class="header">Организация:</div>
    42.                     <div class="content"><input type="text" value="" id="org" name="org"></div>
    43.                 </div>
    44.                 <div class="field">
    45.                     <div class="header">Представитель:</div>
    46.                     <div class="content">
    47.                         <input type="text" value="" id="fio" name="fio">
    48.                         <span class="obligatory">*</span>
    49.                     </div>
    50.                 </div>
    51.                 <div class="field">
    52.                     <div class="header">Телефон:</div>
    53.                     <div class="content"><input type="text" value="" id="phone" name="phone"></div>
    54.                 </div>
    55.                 <div class="field">
    56.                     <div class="header">Эл.почта:</div>
    57.                     <div class="content">
    58.                         <input type="text" value="" id="email" name="email">
    59.                         <span class="obligatory">*</span>
    60.                     </div>
    61.                 </div>
    62.                 <div class="field">
    63.                     <div class="header">Администратор:</div>
    64.                     <div class="content"><input type="checkbox" value="" id="isadmin" name="isadmin" class="chk_box"></div>
    65.                 </div>
    66.                 <div class="field">
    67.                     <div class="header">&nbsp;</div>
    68.                     <div class="content"><input type="button" value="Зарегистрировать" onclick="InitKey();" id="register"></div>
    69.                 </div>
    70.             </form>
    71.             <script type="text/javascript">//<![CDATA[
    72.            
    73.                 var key = '';
    74.                 parent.external.AutoClosing = 0;
    75.                
    76.                 function InitKey()
    77.                 {
    78.                     var emlVal = trim( document.getElementById( "email" ).value );
    79.                     var fioVal = trim( document.getElementById( "fio" ).value );
    80.                     if ( emlVal.length > 0 && fioVal.length > 0 )
    81.                     {
    82.                         try {
    83.                             parent.external.PublicKey = key;
    84.                         }
    85.                         catch(err) {
    86.                             alert("Ошибка!\n" + err.description );
    87.                             return;
    88.                         }
    89.                         document.getElementById( "sign" ).value = parent.external.Signature;
    90.                        
    91.                         document.forms[0].submit();
    92.                        
    93.                     } else if ( fioVal.length == 0 )
    94.                     {
    95.                         document.getElementById( "fio" ).focus();
    96.                        
    97.                     } else if ( emlVal.length == 0 )
    98.                     {
    99.                         document.getElementById( "email" ).focus();
    100.                     }
    101.                 }
    102.                
    103.                 function trim( val )
    104.                 {
    105.                     return val.replace("^\s*|\s*$", '');
    106.                 }
    107.             //]]></script>
    108.     </div>
    109. </body>
     
  5. Fess

    Fess Активный пользователь

    С нами с:
    13 июл 2011
    Сообщения:
    21
    Симпатии:
    0
    Причем после удаления части:

    PHP:
    1.  <?php
    2.  require_once("User.php");
    3.  
    4.  $public_key = "-----BEGIN PUBLIC KEY-----
    5. ******
    6. -----END PUBLIC KEY-----
    7. ";
    8.  
    9.  ?>
    ошибки сценария не вылезают, но при нажатии "Зарегистрировать" выползает ошибка:

    Индекс находился вне границ массива
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    без ключа он у тебя и не будет ругаться.

    ты вместо ключа засунь любой текст несколько строк и посмотри что получится в исходном коде.
     
  7. Fess

    Fess Активный пользователь

    С нами с:
    13 июл 2011
    Сообщения:
    21
    Симпатии:
    0
    Если код с ключом присутствует, то в браузере уже не получается посмотреть исходный код, т.к. перебрасывает на страницу, которая гласит о вторжении (для запуска проги используется флешка с ключом)

    Вбивал другие строки вместо ключа, в проге вылезает ошибка сценария: "незавершенная строковая константа"...посчитав количество символов, оказалось, что ошибка выползает из-за самого ключа

    сделал вот так:
    PHP:
    1. <?php
    2. require_once("User.php");
    3.  
    4. $public_key = "-----BEGIN PUBLIC KEY-----\\
    5. ************RRLjbsiyeSuONA0\\
    6. ************Ja4wSgC6pp/UG\\
    7. ************306FxAsr+7yvxS\\
    8. ************FV4iQIDAQAB\\
    9. -----END PUBLIC KEY-----\\
    10. ";
    11.  
    12. ?>
    ошибка ушла само собой, но далее получил вот такую адскую ошибку сценария:
    error:0906D06C:pEM routines:pEM_read_bio:no start line
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    мне кажется палка в конце строки должна быть одна

    попробуй так

    var key = '<?= str_replace( "\r\n", "\\\r\n", $public_key ) ?>';
     
  9. Fess

    Fess Активный пользователь

    С нами с:
    13 июл 2011
    Сообщения:
    21
    Симпатии:
    0
    igordata, спасибо

    вчера сделал вот так:

    var key = '<?php echo preg_replace("/\n/", '\' + "\n" + \'', $public_key); ?>';

    заработало