Llevo más de una semana con estos errores y no hay manera de arreglarlos en el hosting que estoy ahora (recién cambiado). Me cambié porque quería contratar un servicio que el anterior hosting que estaba no tenía.
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/vhost/ejemplo.net/home/html/Connections/conexionejemplo.php:13) in /var/www/vhost/ejemplo.net/home/html/login.php on line 33
Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhost/ejemplo.net/home/html/Connections/conexionejemplo.php:13) in /var/www/vhost/ejemplo.net/home/html/login.php on line 59
La página la subí de prueba a un hosting gratuito y funciona perfecta (puedo loguearme sin problemas) y en el hosting que la tengo ahora mismo me aparecen esos errores.
He leído ya muchas veces que lo de session_start(); debe ponerse al principio del código de la página, pues si hago eso desaparecen esos errores pero cuando me logueo aparece otro error que es:
Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /var/www/vhost/ejemplo.net/home/html/login.php on line 17
Fatal error: Call to undefined function getsqlvaluestring() in /var/www/vhost/ejemplo.net/home/html/login.php on line 19
También he visto lo de los espacios en blanco y todo.
Aquí pongo el código:
<?php require_once('Connections/conexionejemplo.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
session_start();
}
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
$_SESSION['PrevUrl'] = $_GET['accesscheck'];
}
if (isset($_POST['nombre'])) {
$loginUsername=$_POST['nombre'];
$password=$_POST['contrase'];
$MM_fldUserAuthorization = "";
$MM_redirectLoginSuccess = "admin.php";
$MM_redirectLoginFailed = "index.php";
$MM_redirecttoReferrer = false;
mysql_select_db($database_conexionejemplo, $conexionejemplo);
$LoginRS__query=sprintf("SELECT nombre, contrase FROM administrar WHERE nombre=%s AND contrase=%s",
GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text"));
$LoginRS = mysql_query($LoginRS__query, $conexionejemplo) or die(mysql_error());
$loginFoundUser = mysql_num_rows($LoginRS);
if ($loginFoundUser) {
$loginStrGroup = "";
//declare two session variables and assign them
$_SESSION['MM_Username'] = $loginUsername;
$_SESSION['MM_UserGroup'] = $loginStrGroup;
if (isset($_SESSION['PrevUrl']) && false) {
$MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
}
header("Location: " . $MM_redirectLoginSuccess );
}
else {
header("Location: ". $MM_redirectLoginFailed );
}
}
?>
Ya he pedido ayuda al hosting y nada, parece que no quiere ayudarme.
He escrito muchas veces y esta es una de las respuestas:
Estimado cliente:
Te informamos que los errores mostrados son referentes al codigo. Te hemos facilitado anteriormente una URL donde se puede verificar la configuración del servicio para adecuar la programación y/o solicitar los cambios de configuración que estimes necesários.
Te recordamos que nosotros no facilitamos soporte de desarrollo.
Aquí pongo la configuración php de session del hosting donde da problemas la página:
session
Session Support enabled
Registered save handlers files user
Registered serializer handlers php php_binary wddx
Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 Off Off
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 1000 1000
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.hash_bits_per_character 5 5
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /tmp /tmp
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid 0 0
Y aquí del hosting donde no da problemas:
session
Session Support enabled
Registered save handlers files user sqlite
Registered serializer handlers php php_binary
Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 On On
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_httponly Off Off
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 100 100
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.hash_bits_per_character 4 4
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /tmp /tmp
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid 0 0
Si alguien quiere ayudarme lo agradecería.
if (!isset($_SESSION)) {
session_start();
}
Ese if no sirve de nada.
Ademas
session_start();
Debe ir antes de todo.
ejemplo
<?php
session_start();
require_once('Connections/conexionejemplo.php');
?>
lo que hace session_start(); es basicamente prepararse para el uso de sesiones las cuales mas adelante puede usar $_SESSION['PrevUrl']
Gracias, he cambiado eso, pero ahora cuando inicio sesión me aparece sólo 1 error que es:
Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhost/ejemplo.net/home/html/Connections/conexionejemplo.php:13) in /var/www/vhost/ejemplo.net/home/html/login.php on line 61
y cual es la linea 13 del archivo conexionejemplo.php
Además de la linea 61 del archivo login.php
He modificado ahora los archivos y ahora las líneas de los errores son otras:
Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhost/ejemplo.net/home/html/Connections/conexionejemplo.php:10) in /var/www/vhost/ejemplo.net/home/html/login.php on line 59
Archivo conexionejemplo:
1. <?php
2. # FileName="Connection_php_mysql.htm"
3. # Type="MYSQL"
4. # HTTP="true"
5. $hostname_conexionejemplo = "mysql.ejemplo.net";
6. $database_conexionejemplo = "prueba";
7. $username_conexionejemplo = "prueba";
8. $password_conexionejemplo = "ejemplo321";
9. $conexionejemplo = mysql_pconnect($hostname_conexionejemplo, $username_conexionejemplo, $password_conexionejemplo) or trigger_error(mysql_error(),E_USER_ERROR);
10. ?>
Nota: el nombre de la base de datos y el nombre de usuario es el mismo.
Archivo login.php
33. <?php
34. // *** Validate request to login to this site.
35. $loginFormAction = $_SERVER['PHP_SELF'];
36. if (isset($_GET['accesscheck'])) {
37. $_SESSION['PrevUrl'] = $_GET['accesscheck'];
38. }
39. if (isset($_POST['nombre'])) {
40. $loginUsername=$_POST['nombre'];
41. $password=$_POST['contrase'];
42. $MM_fldUserAuthorization = "";
43. $MM_redirectLoginSuccess = "admin.php";
44. $MM_redirectLoginFailed = "index.php";
45. $MM_redirecttoReferrer = false;
46. mysql_select_db($database_conexionejemplo, $conexionejemplo);
47. $LoginRS__query=sprintf("SELECT nombre, contrase FROM administrar WHERE nombre=%s AND contrase=%s",
48. GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text"));
49. $LoginRS = mysql_query($LoginRS__query, $conexionejemplo) or die(mysql_error());
50. $loginFoundUser = mysql_num_rows($LoginRS);
51. if ($loginFoundUser) {
52. $loginStrGroup = "";
53. //declare two session variables and assign them
54. $_SESSION['MM_Username'] = $loginUsername;
55. $_SESSION['MM_UserGroup'] = $loginStrGroup;
56. if (isset($_SESSION['PrevUrl']) && false) {
57. $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
58. }
59. header("Location: ". $MM_redirectLoginSuccess );
60. }
61. else {
62. header("Location: ". $MM_redirectLoginFailed );
63. }
64. }
65. ?>
mmm leed :http://www.comunidadhosting.com/programacion-y-diseno-web/1657-error-php-warning-cannot-modify-header-information-headers-already-sent.html
Ya funciona!!!!!!!!!!!!!
Gracias!!
Leí esa página hace varios días e hice eso, pero ahora lo he repasado otra vez y junto con lo que me había dicho Red Mx y tú ya está arreglado.