Patrocinador
Tengo una página personalizada en phpBB la cual tiene un formulario que subirá archivos a una carpeta especial. El situación tengo algo así:
1. Tabla en mysql donde guardar los registros
2. Archivo php en raíz del foro
3. Archivo html en template
4. Archivo de lenguage
De momento no incluyo páginas de idioma de phpBB por defecto o uso funciones, y no lo hago porque conozco muy poquitas.
Dejo un ejemplo sencillo resumido de lo que tengo:
HTML (Esta sería la parte importante, le pongo un nombre y un archivo, botón de enviado y un campo oculto que uso en el php para definir que viene desde el formulario)
Código: Seleccionar todo
<form name="send" action="ctfdownloads.php" method="post">
Nombre <input name="file_name" value="" size="30" />
Archivo:<input type="file" name="ctf-file" value="" size="20"/>
<input class="btnmain" type="submit" name="submit" value="{L_SUBMIT}" /></td>
<input type="hidden" name="sended" value="enviado" />
</form>
En principio la página contiene lo que normalmente debe contener
Código: Seleccionar todo
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();

La parte que recibe y actúa en el formulario es:
Código: Seleccionar todo
// Archivo de lenguaje y nombre de la tabla
$user->add_lang(array('mods/ctfdownloads'));
define('CTF_DOWNLOADS_TABLE', $table_prefix.'ctfdownloads');
if(request_var('sended', '', true)== 'enviado'){
// Archivo subido
$ctf_file_temp=$_FILES['ctf-file']['tmp_name'] ;
$ctf_file_content = addslashes(fread(fopen($ctf_file_temp, "rb"), filesize($ctf_file_temp)));
// Leemos formulario del usuario (Modificar)
$file_name = request_var('file_name', '', true);
$file_description = request_var('file_description', '', true);
$file_size = $_FILES['ctf-file']['size'];
$file_type = $_FILES['ctf-file']['size'];
$nfile_name = utf8_normalize_nfc($file_name);
$nfile_description = utf8_normalize_nfc($file_description);
}
$submit = (isset($_POST['submit'])) ? true : false;
La parte de la caja de texto creo que es esta:
Código: Seleccionar todo
if ($submit)
{
if (confirm_box(true))
{
// variables to hold the parameters for submit_pm
$poll = $uid = $bitfield = $options = '';
generate_text_for_storage($my_subject, $uid, $bitfield, $options, false, false, false);
generate_text_for_storage($my_text, $uid, $bitfield, $options, true, true, true);
$data = array(
'file_name' => $nfile_name,
'file_description' => $nfile_description,
...(No lo tengo terminado porqué no llega a esta parte aún, este trozo de código lo saque de una página de ejemplo que hay en phpbb.com)
);
}
else
{
// display mode
confirm_box(false, $user->lang['CTF_CONFIRM_BOX'], $s_hidden_fields);
}
}
Código: Seleccionar todo
[phpBB Debug] PHP Notice: in file /ctfdownloads.php on line 25: fopen() [function.fopen]: Filename cannot be empty
[phpBB Debug] PHP Notice: in file /ctfdownloads.php on line 25: fread() expects parameter 1 to be resource, boolean given
Siento mucho el tocho pero me gusta dar toda la información posible del error, además lo tengo en local por lo tanto no podría mostrarlo en "vivo"
Un saludo y gracias!