Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

CatarinaValente

Acesso restrito não funciona

Recommended Posts

Olá!

Bem, estou de volta aqui pois ando tendo problemas com um ficheiro php que está em um template do wordpress. Já tentei resolver o problema com ele e metade já consegui mas falta a outra metade e acho que vou encontrar a solução aqui! :-)

 

Vamos a descrição do problema:

Quero uma página com acesso restrito apenas a quem for um usuário registado, então no template em questão coloquei este código php:

 

<?php
if (is_user_logged_in()) {
// insere o código aqui
} else {
// caso contrario
echo 'Tens de efectuar o <a href="http://www.culturepoint.com/encontros/wp-login.php?action=register">login</a>.';
}

get_header();
?>

Mas acontece que nem a página fica inacessível para usuários não registados e a chamada fica em cima do header, como podem ver aqui na imagem http://farm5.static....764f1b253_b.jpg

 

O que está errado no código? Pq me aparece a mensagem em cima e não na página em baixo?

Desde já obrigada e desculpem mas não consigo inserir o code nem imagens aqui no fórum (?)?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois, eu peço desculpas e vou tentar explicar melhor...

 

Eu quero a que uma página (Mensagens Privadas)apenas os usuários registados tenham acesso a ela. Daí o code que postei. Mas isso não acontece direito, pois o acesso a página continua disponível a todos os visitantes e quando a página carrega a mensagem "Tens de Efectuar o login" aparece em cima da página e não mais abaixo, dentro do site como deveria.

 

Para melhor compreender é mesmo ver a imagem acima, pois a mensagem que aparece está mesmo em cima da header da página.

 

:-(

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK! Se tiver mais código em php poste ai! e o HTML tbm! E essa página de mensagem, é para todos os usuários, ou é uma página de mensagem para cada usuario??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este é o código da página php- Em html não tenho nenhum

<?php
/**
 * @package Private Messages For WordPress
 *
 * @author: Rilwis
 * @url: http://www.deluxeblogtips.com
 * @email: rilwis@gmail.com
 
 Template Name: Private Messages
 
 */
 ?>

<?php
if (is_user_logged_in()) {
// insere o código aqui
} else {
// caso contrario
echo 'Tens de efectuar o <a href="/wp-login.php?action=register">login</a>.';
}

get_header();
?>
<div class="hfeed content">
	<h2><?php the_title(); ?></h2>
	<a href="javascript:void(0);" onclick="pmSwitch('pm-send');">Send</a> | <a href="javascript:void(0);" onclick="pmSwitch('pm-inbox');">Inbox</a> | <a href="javascript:void(0);" onclick="pmSwitch('pm-outbox');">Outbox</a>
	<script type="text/javascript">
		// Switch between send page, inbox and outbox
		function pmSwitch(page) {
			document.getElementById('pm-send').style.display = 'none';
			document.getElementById('pm-inbox').style.display = 'none';
			document.getElementById('pm-outbox').style.display = 'none';
			document.getElementById(page).style.display = '';
			return false;
		}
	</script>
	<!-- Include scripts and style for autosuggest feature -->
	<script type="text/javascript" src="<?php echo WP_PLUGIN_URL; ?>/private-messages-for-wordpress/js/jquery.min.js"></script>
	<script type="text/javascript" src="<?php echo WP_PLUGIN_URL; ?>/private-messages-for-wordpress/js/jquery.autoSuggest.packed.js"></script>
	<script type="text/javascript" src="<?php echo WP_PLUGIN_URL; ?>/private-messages-for-wordpress/js/script.js"></script>
	<link rel="stylesheet" type="text/css" href="<?php echo WP_PLUGIN_URL; ?>/private-messages-for-wordpress/css/style.css" />
	<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
	<div class="post" id="post-<?php the_ID(); ?>">
		<?php
		$show = array(true, false, false);
		if (isset($_REQUEST['page']) && $_REQUEST['page'] == 'rwpm_inbox') {
			$show = array(false, true, false);
		} elseif (isset($_REQUEST['page']) && $_REQUEST['page'] == 'rwpm_outbox') {
			$show = array(false, false, true);
		}
		?>
		<div id="pm-send" <?php if (!$show[0]) echo 'style="display:none"'; ?>><?php rwpm_send();?></div>
		<div id="pm-inbox" <?php if (!$show[1]) echo 'style="display:none"'; ?>><?php rwpm_inbox();?></div>
		<div id="pm-outbox" <?php if (!$show[2]) echo 'style="display:none"'; ?>><?php rwpm_outbox();?></div>
	</div>
	<?php endwhile; endif; ?>
</div>

<?php get_footer(); ?>

A página na verdade tem um plugin associado que permite apenas aos usuários registados mandarem mensagens entre si.

 

Obrigada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho que seria assim:

EDITADO: Perae...

Usa a variavel $semlogin onde queres que apareca a mensagem de erro.

ou seja;

echo "$semlogin";

 

if (is_user_logged_in()) {
// insere o código aqui
} else {
// caso contrario
$semlogin = 'Tens de efectuar o <a href="/wp-login.php?action=register">login</a>.';
}

get_header();
?>
<div class="hfeed content">
       <h2><?php the_title(); ?></h2>
       <a href="javascript:void(0);" onclick="pmSwitch('pm-send');">Send</a> | <a href="javascript:void(0);" onclick="pmSwitch('pm-inbox');">Inbox</a> | <a href="javascript:void(0);" onclick="pmSwitch('pm-outbox');">Outbox</a>
       <script type="text/javascript">
               // Switch between send page, inbox and outbox
               function pmSwitch(page) {
                       document.getElementById('pm-send').style.display = 'none';
                       document.getElementById('pm-inbox').style.display = 'none';
                       document.getElementById('pm-outbox').style.display = 'none';
                       document.getElementById(page).style.display = '';
                       return false;
               }
       </script>
       <!-- Include scripts and style for autosuggest feature -->
       <script type="text/javascript" src="<?php echo WP_PLUGIN_URL; ?>/private-messages-for-wordpress/js/jquery.min.js"></script>
       <script type="text/javascript" src="<?php echo WP_PLUGIN_URL; ?>/private-messages-for-wordpress/js/jquery.autoSuggest.packed.js"></script>
       <script type="text/javascript" src="<?php echo WP_PLUGIN_URL; ?>/private-messages-for-wordpress/js/script.js"></script>
       <link rel="stylesheet" type="text/css" href="<?php echo WP_PLUGIN_URL; ?>/private-messages-for-wordpress/css/style.css" />
       <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
       <div class="post" id="post-<?php the_ID(); ?>">
               <?php
               $show = array(true, false, false);
               if (isset($_REQUEST['page']) && $_REQUEST['page'] == 'rwpm_inbox') {
                       $show = array(false, true, false);
               } elseif (isset($_REQUEST['page']) && $_REQUEST['page'] == 'rwpm_outbox') {
                       $show = array(false, false, true);
               }
               ?>
               <div id="pm-send" <?php if (!$show[0]) echo 'style="display:none"'; ?>><?php rwpm_send();?></div>
               <div id="pm-inbox" <?php if (!$show[1]) echo 'style="display:none"'; ?>><?php rwpm_inbox();?></div>
               <div id="pm-outbox" <?php if (!$show[2]) echo 'style="display:none"'; ?>><?php rwpm_outbox();?></div>
       </div>
       <?php endwhile; endif; ?>
</div>

<?php get_footer(); ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou experimentar

 

Olha, funcionou mais ou menos, pois agora a mensagem aparece em outra página em branco o que não está ruim.

 

Mas não teria um jeito de aparecer na mesma janela do site, dentro do template da página?

 

De todas as formas já está bem melhor! Obrigada Sem_ideia_para_nick

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou experimentar

 

Olha, funcionou mais ou menos, pois agora a mensagem aparece em outra página em branco o que não está ruim.

 

Mas não teria um jeito de aparecer na mesma janela do site, dentro do template da página?

 

De todas as formas já está bem melhor! Obrigada Sem_ideia_para_nick

 

como citei anteriomente:

Usa a variavel $semlogin onde queres que apareca a mensagem de erro.

ou seja;

coloque

echo "$semlogin";

onde você quer que apareca a mensagem removendo o exit.

Codigo:

if (is_user_logged_in()) {
// insere o código aqui
} else {
// caso contrario
$semlogin = 'Tens de efectuar o <a href="/wp-login.php?action=register">login</a>.';
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom entendi a sua dúvida! Ela é mais de HTML, mas tudo bem!

 

Sabe o código em HTML ou XHTML que tem o template e todo o mais? Basta você chamar o php dentro de uma table eu acho! Aí o resultado vai ser dentro do lugar que você quer!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Complementando, esse código deve estar dentro desse método get_header()

 

Lá é só colocar um

<?php echo $semLogin ?>
de acordo com o código do @Sem_ideia_para_nick

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.