Redirecionamento de sites com php e .htaccess

Sin comentarios »

Se você usa PHP para redirecionar seu site, saiba que é muito provável que seu site não esteja sendo corretamente indexado pelo Google.

Por default o PHP envia o código 302 que significa “recurso temporariamente movido” e isso faz com que o Googlebot não indexe o destino de seu redirecionamento.

Por exemplo, o código abaixo somente será útil se seu site está realmente em manutenção no momento:

<?php
header
('Location: http://www.foo.com/bar/');
?>

Já os comandos abaixo farão com que o Google siga o redirecionamento e indexe seu site:

<?php
header
('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.foo.com/bar/');
?>

Porém, a melhor maneira, caso seja possível, é fazer o redirecionamento através do arquivo .htaccess do Apache.

No exemplo abaixo, cada requisição para foo.com/ é redirecionada para foo.com/bar/:

#Redirect (this will result in a 301 permanently moved status code)
RedirectMatch permanent ^/$ http://www.foo.com/bar/

O uso do arquivo .htaccess é mais rápido e consome menos recursos do servidor.

O usuário atual é o administrador ?

Sin comentarios »

Navegando pela internet, encontrei a função abaixo, e achei interessante.

Se você precisar verificar, de dentro do seu aplicativo Delphi, se o usuário corrente é o administrador do computador, ou membro do grupo administradores, use a função “IsWindowsAdmin”.

unit WindowsUser;

interface
uses Windows;

//retorna True se o usuário atual tem privilégios administrativos
function IsWindowsAdmin: Boolean;

implementation

const
SECURITY_NT_AUTHORITY: TSIDIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 5)) ;

const
SECURITY_BUILTIN_DOMAIN_RID = $00000020;
DOMAIN_ALIAS_RID_ADMINS = $00000220;

function IsWindowsAdmin: Boolean;
var
hAccessToken: THandle;
ptgGroups: PTokenGroups;
dwInfoBufferSize: DWORD;
psidAdministrators: PSID;
g: Integer;
bSuccess: BOOL;
begin
Result := False;

bSuccess := OpenThreadToken(GetCurrentThread, TOKEN_QUERY, True, hAccessToken) ;
if not bSuccess then
begin
if GetLastError = ERROR_NO_TOKEN then
bSuccess := OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, hAccessToken) ;
end;

if bSuccess then
begin
GetMem(ptgGroups, 1024) ;

bSuccess := GetTokenInformation(hAccessToken, TokenGroups, ptgGroups, 1024, dwInfoBufferSize) ;

CloseHandle(hAccessToken) ;

if bSuccess then
begin
AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, psidAdministrators) ;

for g := 0 to ptgGroups.GroupCount – 1 do
if EqualSid(psidAdministrators, ptgGroups.Groups[g].Sid) then
begin
Result := True;
Break;
end;

FreeSid(psidAdministrators) ;
end;

FreeMem(ptgGroups) ;
end;
end;

end.

Publicidad