priscylla 0 Denunciar post Postado Julho 30, 2010 Ola gente, sou nova aqui no fórum... e não sei muito de php. Estou precisando muito de ajuda... Estou desenvolvendo uma intranet em joomla, (sei que aqui são problemas com php e o meu é) Fiz algumas modificações em um componente do joomla, o com_user no controller.php... o objetivo disso é fazer com que o sistema logue com o nome do usuário que está logado no computador, o código está funcionando no mozilla e no chrome, mas não no IE! Alguém sabe dizer se existe alguma parte do código php que é incompatível no IE?!?! Segue meu código... p.s.: Essa função é chamada por um form em um submit!! function login() { // Check for request forgeries JRequest::checkToken('request') or jexit( 'Invalid Token' ); //______________Inicio da modificação_____________________ $headers = apache_request_headers(); if (!isset($headers['Authorization'])){ header('HTTP/1.1 401 Unauthorized'); header('WWW-Authenticate: NTLM'); echo " 1"; exit; } $auth = $headers['Authorization']; echo " 2"; if (substr($auth,0,5) == 'NTLM ') { $msg = base64_decode(substr($auth, 5)); echo " 3"; if (substr($msg, 0, 8) != "NTLMSSP\x00"){ LogError('Header not recognised'); echo " 4"; die; } if ($msg[8] == "\x01") { $msg2 = "NTLMSSP\x00\x02"."\x00\x00\x00\x00". "\x00\x00\x00\x00". "\x01\x02\x81\x01". "\x00\x00\x00\x00\x00\x00\x00\x00". "\x00\x00\x00\x00\x00\x00\x00\x00". "\x00\x00\x00\x00\x30\x00\x00\x00"; echo " 5"; header('HTTP/1.1 401 Unauthorized'); header('WWW-Authenticate: NTLM '.trim(base64_encode($msg2))); echo " 6"; exit; } else if ($msg[8] == "\x03") { echo " 7"; function get_msg_str($msg, $start, $unicode = true) { $len = (ord($msg[$start+1]) * 256) + ord($msg[$start]); $off = (ord($msg[$start+5]) * 256) + ord($msg[$start+4]); echo " 8"; if ($unicode) return str_replace("\0", '', substr($msg, $off, $len)); else return substr($msg, $off, $len); } echo " 9"; $user = get_msg_str($msg, 36);//retorna o login do usuário no computador //$domain = get_msg_str($msg, 28); //$workstation = get_msg_str($msg, 44); } } //_______________Fim da parte modificada_____________________ global $mainframe; if ($return = JRequest::getVar('return', '', 'method', 'base64')) { $return = base64_decode($return); if (!JURI::isInternal($return)) { $return = ''; } } $options = array(); $options['remember'] = JRequest::getBool('remember', false); $options['return'] = $return; $credentials = array(); //AQUI TBM DEVE SER MODIFICADO DESTA FORMA $credentials['username'] = $user; $credentials['password'] = "123456"; //preform the login action $error = $mainframe->login($credentials, $options); if(!JError::isError($error)) { // Redirect if the return url is not registration or login if ( ! $return ) { $return = 'index.php?option=com_user'; } $mainframe->redirect( $return ); } else { // Facilitate third party login forms if ( ! $return ) { $return = 'index.php?option=com_user&view=login'; } // Redirect to a login form $mainframe->redirect( $return ); } } Compartilhar este post Link para o post Compartilhar em outros sites
cassiano óliver 1 Denunciar post Postado Julho 30, 2010 Tem algum js na página? deve ser esse o problema... Compartilhar este post Link para o post Compartilhar em outros sites
priscylla 0 Denunciar post Postado Agosto 4, 2010 Não tem não Cassiano... Olha o código da página que chama a função... <?php // no direct access defined('_JEXEC') or die('Restricted access'); ?> <?php if($type == 'logout') : ?> <form action="index.php" method="post" name="login" id="form-login"> <?php if ($params->get('greeting')) : ?> <div> <?php if ($params->get('name')) : { echo JText::sprintf( 'HINAME', $user->get('name') ); } else : { echo JText::sprintf( 'HINAME', $user->get('username') ); } endif; ?> </div> <?php endif; ?> <div align="center"> <input type="submit" name="Submit" class="button" value="<?php echo JText::_( 'BUTTON_LOGOUT'); ?>" /> </div> <input type="hidden" name="option" value="com_user" /> <input type="hidden" name="task" value="logout" /> <input type="hidden" name="return" value="<?php echo $return; ?>" /> </form> <?php else : ?> <?php if(JPluginHelper::isEnabled('authentication', 'openid')) : $lang->load( 'plg_authentication_openid', JPATH_ADMINISTRATOR ); $langScript = 'var JLanguage = {};'. ' JLanguage.WHAT_IS_OPENID = \''.JText::_( 'WHAT_IS_OPENID' ).'\';'. ' JLanguage.LOGIN_WITH_OPENID = \''.JText::_( 'LOGIN_WITH_OPENID' ).'\';'. ' JLanguage.NORMAL_LOGIN = \''.JText::_( 'NORMAL_LOGIN' ).'\';'. ' var modlogin = 1;'; $document = &JFactory::getDocument(); $document->addScriptDeclaration( $langScript ); JHTML::_('script', 'openid.js'); echo JRoute::_( 'index.php', true, $params->get('usesecure')); echo JHTML::_( 'form.token' ); endif; ?> <!--<form action="<?php echo JRoute::_( 'index.php', true, $params->get('usesecure')); ?>" method="post" name="login" id="form-login" > <?php echo $params->get('pretext'); ?> <fieldset class="input"> <p id="form-login-username"> <label for="modlgn_username"><?php echo JText::_('Username') ?></label><br /> <input id="modlgn_username" type="text" name="username" class="inputbox" alt="username" size="18"/> </p> <p id="form-login-password"> <label for="modlgn_passwd"><?php echo JText::_('Password') ?></label><br /> <input id="modlgn_passwd" type="password" name="passwd" class="inputbox" size="18" alt="password" value="123456" /> </p> <?php if(JPluginHelper::isEnabled('system', 'remember')) : ?> <p id="form-login-remember"> <label for="modlgn_remember"><?php echo JText::_('Remember me') ?></label> <input id="modlgn_remember" type="checkbox" name="remember" class="inputbox" value="yes" alt="Remember Me" /> </p> <?php endif; ?> <input type="submit" name="Submit" class="button" value="<?php echo JText::_('LOGIN') ?>" /> </fieldset> <!--<ul> <li> <a href="<?php echo JRoute::_( 'index.php?option=com_user&view=reset' ); ?>"> <?php echo JText::_('FORGOT_YOUR_PASSWORD'); ?></a> </li> <li> <a href="<?php echo JRoute::_( 'index.php?option=com_user&view=remind' ); ?>"> <?php echo JText::_('FORGOT_YOUR_USERNAME'); ?></a> </li> <?php $usersConfig = &JComponentHelper::getParams( 'com_users' ); if ($usersConfig->get('allowUserRegistration')) : ?> <li> <a href="<?php echo JRoute::_( 'index.php?option=com_user&view=register' ); ?>"> <?php echo JText::_('REGISTER'); ?></a> </li> <?php endif; ?> </ul>--> <?php echo $params->get('posttext'); ?> <input type="hidden" name="option" value="com_user" /> <input type="hidden" name="task" value="login" /> <input type="hidden" name="return" value="<?php echo $return; ?>" /> <?php echo JHTML::_( 'form.token' ); ?> <br><p><h4>Para cadastro ou problemas com login e senha, entre em contato com o setor de DTI.</h4></p> </form> <?php endif; ?> O que está em comentário não está sendo utilizado... é o form onde o usuário iria digitar o login e a senha, mas como estou passando os valores o usuário não precisa digitar. Será que tem como eu tirar esse form, e fazer a chamada a função apenas por php??? Alguém tem mas alguma idéia do que seja??? Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Agosto 4, 2010 header('HTTP/1.1 401 Unauthorized'); header('WWW-Authenticate: NTLM'); Inverte a ordem. As páginas de erro personalizado do IE devem de estar causando o problema. ficaria assim header('WWW-Authenticate: NTLM'); header('HTTP/1.1 401 Unauthorized'); Se o problema persistir, comente a segunda linha e verfique. Compartilhar este post Link para o post Compartilhar em outros sites
priscylla 0 Denunciar post Postado Agosto 4, 2010 Vlw, pela ajuda Evandro! Mas não funcionou não! Acho q vou ter qua arrumar outra solução pro meu problema! =/ Compartilhar este post Link para o post Compartilhar em outros sites
GabrielFerrari 41 Denunciar post Postado Agosto 4, 2010 Essa parte que está comentada está apenas tirando o que é HTML as partes em php continuam funcionando você não deveria comentar o php também? Compartilhar este post Link para o post Compartilhar em outros sites