2012-02-18 18 views
5

bien, así que estoy creando un sistema php login y quería una forma sencilla de obtener el enlace a la página de salida llamando a una función, pero sigue volviendo 0. Él es mi función:php function returning 0?

function logout_link() { 
include("auth_vars.php"); //This file contains $auth_path_login 
return $auth_path_login+"?status=loggedout";} 

y esto es cómo lo estoy usando:

<a href="<?php echo logout_link();?>">logout</a> 

Sin embargo se sigue produciendo:

<a href="0">logout</a> 

lo que va mal?

+0

¿Qué * exactamente * contiene 'auth_vars.php'? – Quentin

+7

Use '.' para concatenar cadenas en PHP, no' + ' –

+0

No puedo decir mucho más sin ver auth_vars.php, pero parece que algo en ese archivo puede devolver 0. Intente mover el include a la parte superior del archivo en lugar de dentro de la función. Editar: @Pekka tiene razón, ese es tu problema. –

Respuesta

5

su código PHP es incorrecta. Debería ser:

function logout_link() { 
include("auth_vars.php"); //This file contains $auth_path_login 
return $auth_path_login."?status=loggedout"; 
} 
+1

@luke: tenga en cuenta el "." en lugar de "+". El operador aritmético "+" convierte logout_link() en una función numérica ... que devuelve el resultado "0". – paulsm4

7

En PHP . es el operador de concatenación y + es o bien la adición, o el operador para combinar las matrices. Debido a que combina + con tipos simples (no matrices), PHP descuenta ambos valores a un valor numérico. En su caso es solo 0+0

6

PHP utiliza . para concatenar cadenas, no +.

Tal vez puedas probar:

function logout_link() { 
    include("auth_vars.php"); //This file contains $auth_path_login 
    return $auth_path_login . "?status=loggedout"; 
} 
3

que quería decir:

return $auth_path_login."?status=loggedout"; 

operador La concatenación es . en PHP.