Доброго времени суток! После переноса на новый хостинг в программе стали вылезать ошибки сценария: CreateKey.php: PHP: <?php require_once("User.php"); $public_key = "-----BEGIN PUBLIC KEY----- ****** -----END PUBLIC KEY----- "; ?> <html> <head> ****** </head> <body style="overflow: hidden;"> <div id="modalContent" style="width:400px; height:300px; overflow: hidden;"> <a href="" onclick="parent.closeModalWindow(); return false;" class="close_modal">X</a> <?php if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) : do { $str = $_POST['sign']; $msg = User::DecodeSignature($str); if( !empty($msg) ) break; $new_user = new User; list( $new_user->id, $new_user->timestamp ) = User::ParseSignature($str); if( !isset($new_user->timestamp) ) { $msg = $new_user->id; break; } $new_user->person = $_POST['fio']; $new_user->email = $_POST['email'];[color=red] //строка 69[/color] $new_user->phone = $_POST['phone']; $new_user->org = $_POST['org']; $new_user->is_admin = array_key_exists('isadmin', $_POST); //print_r($new_user); $new_user->WriteFile();[color=red] //строка 74[/color] } while(0); ?> <p>Ключ инициализирован и зарегистрирован в системе.</p> <p>Вставьте административный ключ перед тем как закрыть окно или нажмите <a href="javascript:void(0);" onclick="navigate('CreateKey.php'); return false;">подготовка нового ключа</a>. </p> <?php else : // Not POST ?> <p>Подготовка и регистрация нового ключа. <b>Замените рабочий ключ на новый.</b></p> <form method="post" action="CreateKey.php"> <input type="hidden" value="" id="sign" name="sign"> <div class="field"> <div class="header">Организация:</div> <div class="content"><input type="text" value="" id="org" name="org"></div> </div> <div class="field"> <div class="header">Представитель:</div> <div class="content"> <input type="text" value="" id="fio" name="fio"> <span class="obligatory">*</span> </div> </div> <div class="field"> <div class="header">Телефон:</div> <div class="content"><input type="text" value="" id="phone" name="phone"></div> </div> <div class="field"> <div class="header">Эл.почта:</div> <div class="content"> <input type="text" value="" id="email" name="email"> <span class="obligatory">*</span> </div> </div> <div class="field"> <div class="header">Администратор:</div> <div class="content"><input type="checkbox" value="" id="isadmin" name="isadmin" class="chk_box"></div> </div> <div class="field"> <div class="header"> </div> <div class="content"><input type="button" value="Зарегистрировать" onclick="InitKey();" id="register"></div> </div> </form> <script type="text/javascript">//<![CDATA[ var key = '<?= str_replace( "\r\n", "\\n\\\r\n", $public_key ) ?>'; parent.external.AutoClosing = 0; function InitKey() { var emlVal = trim( document.getElementById( "email" ).value ); var fioVal = trim( document.getElementById( "fio" ).value ); if ( emlVal.length > 0 && fioVal.length > 0 ) { try { parent.external.PublicKey = key; } catch(err) { alert("Ошибка!\n" + err.description ); return; } document.getElementById( "sign" ).value = parent.external.Signature; document.forms[0].submit(); } else if ( fioVal.length == 0 ) { document.getElementById( "fio" ).focus(); } else if ( emlVal.length == 0 ) { document.getElementById( "email" ).focus(); } } function trim( val ) { return val.replace("^\s*|\s*$", ''); } //]]></script> <?php endif; ?> </div> </body> Подскажите в чем может быть проблема, или хотя б в каком направлении копать
в разных энтерах в паблик кей, ты видимо его поменял =) тут вобще больше никаких переменных нет. зайди на страницу с ошибками и найди это место в уже готовом документе в эксплорере через просмотр исходного кода страницы. и там посмотри как выглядит.
Это все работает не через браузер, а через отдельную прогу. Без проверки ключа запустил в браузере, вот исходный код: HTML: <html> <head> <link href="Theme/main.css" rel="stylesheet" type="text/css" /> <style type="text/css"> .field { width: 400px; overflow: hidden; margin: 2px 0; } .field .header { width: 110px; float: left; } .field .content { margin-left: 120px; } .field .content input { width: 200px; } .field #register { margin-top: 10px; } .field .content .chk_box { width: auto; margin-left: -5px; } span.obligatory { color: red; } </style> </head> <body style="overflow: hidden;"> <div id="modalContent" style="width:400px; height:300px; overflow: hidden;"> <a href="" onclick="parent.closeModalWindow(); return false;" class="close_modal">X</a> <p>Подготовка и регистрация нового ключа. <b>Замените рабочий ключ на новый.</b></p> <form method="post" action="CreateKey.php"> <input type="hidden" value="" id="sign" name="sign"> <div class="field"> <div class="header">Организация:</div> <div class="content"><input type="text" value="" id="org" name="org"></div> </div> <div class="field"> <div class="header">Представитель:</div> <div class="content"> <input type="text" value="" id="fio" name="fio"> <span class="obligatory">*</span> </div> </div> <div class="field"> <div class="header">Телефон:</div> <div class="content"><input type="text" value="" id="phone" name="phone"></div> </div> <div class="field"> <div class="header">Эл.почта:</div> <div class="content"> <input type="text" value="" id="email" name="email"> <span class="obligatory">*</span> </div> </div> <div class="field"> <div class="header">Администратор:</div> <div class="content"><input type="checkbox" value="" id="isadmin" name="isadmin" class="chk_box"></div> </div> <div class="field"> <div class="header"> </div> <div class="content"><input type="button" value="Зарегистрировать" onclick="InitKey();" id="register"></div> </div> </form> <script type="text/javascript">//<![CDATA[ var key = ''; parent.external.AutoClosing = 0; function InitKey() { var emlVal = trim( document.getElementById( "email" ).value ); var fioVal = trim( document.getElementById( "fio" ).value ); if ( emlVal.length > 0 && fioVal.length > 0 ) { try { parent.external.PublicKey = key; } catch(err) { alert("Ошибка!\n" + err.description ); return; } document.getElementById( "sign" ).value = parent.external.Signature; document.forms[0].submit(); } else if ( fioVal.length == 0 ) { document.getElementById( "fio" ).focus(); } else if ( emlVal.length == 0 ) { document.getElementById( "email" ).focus(); } } function trim( val ) { return val.replace("^\s*|\s*$", ''); } //]]></script> </div> </body>
Причем после удаления части: PHP: <?php require_once("User.php"); $public_key = "-----BEGIN PUBLIC KEY----- ****** -----END PUBLIC KEY----- "; ?> ошибки сценария не вылезают, но при нажатии "Зарегистрировать" выползает ошибка: Индекс находился вне границ массива
без ключа он у тебя и не будет ругаться. ты вместо ключа засунь любой текст несколько строк и посмотри что получится в исходном коде.
Если код с ключом присутствует, то в браузере уже не получается посмотреть исходный код, т.к. перебрасывает на страницу, которая гласит о вторжении (для запуска проги используется флешка с ключом) Вбивал другие строки вместо ключа, в проге вылезает ошибка сценария: "незавершенная строковая константа"...посчитав количество символов, оказалось, что ошибка выползает из-за самого ключа сделал вот так: PHP: <?php require_once("User.php"); $public_key = "-----BEGIN PUBLIC KEY-----\\ ************RRLjbsiyeSuONA0\\ ************Ja4wSgC6pp/UG\\ ************306FxAsr+7yvxS\\ ************FV4iQIDAQAB\\ -----END PUBLIC KEY-----\\ "; ?> ошибка ушла само собой, но далее получил вот такую адскую ошибку сценария: error:0906D06CEM routinesEM_read_bio:no start line
мне кажется палка в конце строки должна быть одна попробуй так var key = '<?= str_replace( "\r\n", "\\\r\n", $public_key ) ?>';
igordata, спасибо вчера сделал вот так: var key = '<?php echo preg_replace("/\n/", '\' + "\n" + \'', $public_key); ?>'; заработало