Recordad que para pedir soporte alguno, debéis facilitar los datos de soporte oportunos por favor, mirad aquí y leer las Normas generales del foro, esto nos servirá de ayuda para dar el mejor soporte..

Gracias.

La Administración de phpBB España.

Error General con $_POSTTema Solucionado

Foros de soporte phpBB 3.1.x
Cerrado
Avatar de Usuario
Yerro
Observador/a
Mensajes: 10
Registrado: 01 Ago 2015, 23:30

Error General con $_POST

#1

Mensaje por Yerro »

URL: www.whetstone.es/foro/
Estilo(s) usuado(s): Basic (greendark)
Extensiones instaladas: System Mention
Versión de phpBB: 3.1.5
Servidor: (del sitio en cuestión, si es de pago, gratuito, etc.) Hostinger
Si es una actualización desde otra versión: (especificar versión anterior y versión de actualización) 3.0.4 y ahora está en 3.1.5
Si es una conversión desde otro tipo de Foro: (especificar sistema de foro anterior y versión del nuevo)
Especificar lo mejor posible el problema, copiando y pegando el error de tu sitio.
Realizando una búsqueda antes de preguntar en cualquiera de los foros.




Buenas noches a todos y a todas, tengo un problema con una aplicación (http://www.whetstone.es/pcu/) que está vinculada al foro phpBB. He actualizado el foro que tenía que era 3.0.14 a la versión 3.1.5.

Bien, esta aplicación lo que hace es coger el usuario y la contraseña que tiene un usuario del foro para poder acceder al pcu. Perfecto con la versión 3.0.14, pero desde que he actualizado e intento loguear en el pcu con el email y contraseña del foro sale el siguiente error:

Error General
Illegal use of $_POST. You must use the request class or request_var() to access input data. Found in /home/u599504800/public_html/pcu/login.php on line 73. This error message was generated by deactivated_super_global.


Y da los siguientes errores:

BACKTRACE
FILE: (not given by php)
LINE: (not given by php)
CALL: msg_handler()

FILE: [ROOT]/phpbb/request/deactivated_super_global.php
LINE: 67
CALL: trigger_error()

FILE: [ROOT]/phpbb/request/deactivated_super_global.php
LINE: 87
CALL: phpbb\request\deactivated_super_global->error()

FILE: /home/u599504800/public_html/pcu/login.php
LINE: 73
CALL: phpbb\request\deactivated_super_global->offsetGet()




En dichas líneas lo que tengo es el $_POST, pero además del login.php, prácticamente las demás páginas utilizan la misma función. ¿Alguien sabe lo que está ocurriendo o como solucionarlo? ¿Alguna función similar a ésta?

Gracias.

Avatar de Usuario
ThE KuKa
Administrador
Mensajes: 10432
Registrado: 04 Ene 2004, 19:27
Género:
Edad: 50

Re: Error General con $_POST

#2

Mensaje por ThE KuKa »

request_var() no está permitido en phpBB 3.1.x en $_POST deberíamos ver el archivo login.php para intentar averiguar algo más.

📌 Raul [ThE KuKa] en phpBB 📌
✅ Jr. Extension Validator - Jr. Styles Validator - Style Customisations - Translator - International Support Team
✅

Si te gustan mis estilos, traducciones, etc. y quieres mostrar algo de aprecio, no dudes en hacer una donación Imagen
:flag_es: phpBB España - En línea desde 2003 :heart:



Avatar de Usuario
Yerro
Observador/a
Mensajes: 10
Registrado: 01 Ago 2015, 23:30

Re: Error General con $_POST

#3

Mensaje por Yerro »

ThE KuKa escribió:request_var() no está permitido en phpBB 3.1.x en $_POST deberíamos ver el archivo login.php para intentar averiguar algo más.

Código: Seleccionar todo

<?php	
	include("config.php");
	session_start();
	if($_POST['bacceso'] == 'Acceder' && !empty($_POST['ipersonaje']))
	{		
		$idPJ = strval($_POST['ipersonaje']);
		$conexion = mysqli_connect($host_pcu, $user_pcu, $password_pcu, $database_pcu);		
		$sql = "SELECT * FROM players WHERE id = $idPJ AND Email = '".$_SESSION['email']."'";
		$result = mysqli_query($conexion, $sql);
		if($result == false) 
		{
			mysqli_close($conexion);
			ob_end_clean();
			header("Location: personaje.php");
		}
		$row = mysqli_fetch_array($result);
		$_SESSION['id'] = $row['id'];
		$_SESSION['nombre'] = $row['Nombre'];
		$_SESSION['contraseña'] = $row['Password'];
		$_SESSION['seguro'] = $row['SeguroMedico'];
		$_SESSION['licencias'] = $row['Licencias'];
		$_SESSION['telefonos'] = $row['Telefonos'];
		$_SESSION['banco'] = $row['Banco'];
		$_SESSION['sexo'] = $row['Sexo'];
		$_SESSION['raza'] = $row['Raza'];
		$_SESSION['skin'] = $row['Skin'];
		$_SESSION['edad'] = $row['Edad'];
		$_SESSION['faccion'] = $row['Faccion'];
		$_SESSION['certificacion'] = $row['Certificacion'];
		$_SESSION['certificador'] = $row['Certificador'];
		$_SESSION['peliculas'] = $row['Peliculas'];
		$_SESSION['coches'] = $row['Coches'];
		switch($row['Certificacion'])
		{
			case 0:	
				mysqli_close($conexion);
				ob_end_clean();
				header("Location: test.php");
				break;
			case 1:
				$_SESSION['user_logged_in'] = 2;
				mysqli_close($conexion);
				ob_end_clean(); 
				header("Location: estadisticas.php");	
			break;
			default:
				$sql = "SELECT * FROM web_cert WHERE nombre = '".$_SESSION['nombre']."'";
				$result = mysqli_query($conexion, $sql);
				$row = mysqli_fetch_array($result);
				$id = $row['id'];
				if(mysqli_num_rows($result) == 0) 
				{	
					mysqli_close($conexion);
					ob_end_clean(); 
					header("Location: certificacion.php");	
				}				
				else 
				{				
					$sql= "SELECT * FROM web_cert WHERE id < $id";	
					$resultado = mysqli_query($conexion, $sql);	
					$certificaciones = mysqli_num_rows($resultado);	
					mysqli_close($conexion);	
					if($certificaciones == 0) echo "<script>alert('Todavía no te han certificado la cuenta, estás en primera posición.'); window.location = 'personaje.php';</script>";
					else echo "<script>alert('Todavía no te han certificado la cuenta, hay $certificaciones antes que la tuya.'); window.location = 'personaje.php';</script>";
				}	
				break;
		}	
	}
	else if($_POST['blogin'] == "Acceder" && !empty($_POST['logincuenta']) && !empty($_POST['loginpass']))
	{
		include 'functions.php';
		$conexion = mysqli_connect($host_foro, $user_foro, $password_foro, $database_foro);
		$usuario = mysqli_real_escape_string($conexion, $_POST['logincuenta']);
		$sql = "SELECT user_password FROM phpbb_users WHERE username = '$usuario'";
		$result = mysqli_query($conexion, $sql);
		if(mysqli_num_rows($result) > 0)
		{
			$row = mysqli_fetch_array($result);
			$t_hasher = new PasswordHash(8, TRUE);
			if($t_hasher->CheckPassword($_POST['loginpass'], $row['user_password']))
			{
				$sql = "SELECT user_email FROM phpbb_users WHERE username = '$usuario' ";
				$result = mysqli_query($conexion, $sql);
				$row = mysqli_fetch_row($result);
				$_SESSION['user_logged_in'] = 1;
				$_SESSION['email'] = $row[0];
				$_SESSION['usuario'] = $usuario;
				mysqli_close($conexion);	
				ob_end_clean();		
				header("Location: personaje.php");
			}
			else
			{
				mysqli_close($conexion);
				ob_end_clean();
				header("Location: index.php");
			}
		}
		else
		{
			mysqli_close($conexion);
			ob_end_clean();
			header("Location: index.php");
		}	
	}
	else
	{		
		ob_end_clean();	
		if($_SESSION['user_logged_in'] == 1) header("Location: personaje.php");
		else if($_SESSION['user_logged_in'] == 2) header("Location: estadisticas.php");	
		else header("Location: index.php");	
	}
?>
Esta es la línea:

Código: Seleccionar todo

$usuario = mysqli_real_escape_string($conexion, $_POST['logincuenta']);

Avatar de Usuario
canidev
Moderador
Mensajes: 709
Registrado: 30 Jun 2011, 17:06
Género:
Edad: 38

Re: Error General con $_POST

#4

Mensaje por canidev »

Partiendo de la base de que cargas el archivo "common.php" de phpBB desde algún sitio, tendrías que usar las funciones de phpBB en lugar de usar directamente $_POST (usando la clase "request" o la función "request_var"). Te pongo un ejemplo de como tienes ese código y como debería estar.

Así es como está:

Código: Seleccionar todo

      $usuario = mysqli_real_escape_string($conexion, $_POST['logincuenta']);
      $sql = "SELECT user_password FROM phpbb_users WHERE username = '$usuario'";
Así es como debería estar:

Código: Seleccionar todo

		$usuario = utf8_normalize_nfc($request->variable('logincuenta', '', true, \phpbb\request\request_interface::POST));
		$usuario = mysqli_real_escape_string($conexion, $usuario);
		
		$sql = "SELECT user_password FROM " . USERS_TABLE . " WHERE username = '$usuario'";
y para estar al 100% habría que cambiar las funciones de mysqli por la clase "db" de phpBB.

Otra cosa que puedes probar si quieres seguir usando el $_POST es probar a poner esto al principio (antes de cualquier llamada a $_POST y después de haber incluído las funciones de phpBB):

Código: Seleccionar todo

$request->enable_super_globals();

Avatar de Usuario
Yerro
Observador/a
Mensajes: 10
Registrado: 01 Ago 2015, 23:30

Re: Error General con $_POST  Tema Solucionado

#5

Mensaje por Yerro »

¡¡Muchisimas gracias amigo!!

Ha funcionado con solamente cambiar la clase que me has dicho, ¡gracias de nuevo! Pueden cerrar el tema, resuelto :rock:

Cerrado

Volver a “Foros de Soporte 3.1.x”