[SOLUCIONADO] Error en código PHP, e intentado de todo y no me funciona

Iniciado por fortil, Agosto 09, 2011, 11:08:43 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

resulta que en una pagina me he encontrado con este codigo y al ponerlo en el servidor, me manda a error
Código: php
<?php
include('config.php');// Incluimos las configuraciones
if($_POST){
if($_POST['t']=="user"){
$user=array();
$in=0;
$ac=0;
$Sqll = mysql_query("SELECT * FROM online WHERE sala='".$_POST['sala']."'",$con) or die(mysql_error());
while($dat= mysql_fetch_array($Sqll)){
$use=stripslashes($dat['user']);
$time=$dat['time'];
if(abs(time()-$time)<(200+$seg_inac)){
if($time>time()){
$ac++;
$user[]='<strong>'.$use.'</strong>';
}else{
$in++;
$user[]='<i>'.$use.'</i>';
}
}else{
if($use!=$_POST['user']){
$consulta = "DELETE FROM online WHERE id ='".$dat['id']."'";
$resultado = mysql_query($consulta) or die(mysql_error());
}
}
}
if(empty($user))
echo "No hay usuarios conectados.";
else{
$user[]="<hr />Hay ".$ac." usuarios activos y ".$in." inactivos.(".($ac+$in).")";
echo implode('
',$user);

}
}elseif($_POST['t']=="conectar"){
$name=$_POST['name'];
$sala=$_POST['sala'];
$n=mysql_num_rows(mysql_query("SELECT * FROM online WHERE user='".$name."'"));
if($n==0){
$campos=array('time','user','sala');
$datos=array(  (time())+$seg_inac,$name,$sala);
$c=implode(',',$campos);
$d='''.implode("','",$datos).''';
$sSQL=sprintf("INSERT INTO %s (%s) VALUES (%s)","online",$c,$d);
$query = mysql_query($sSQL);
}elseif($n==1){
$consulta = "Update online set time='".(time()+$seg_inac)."', sala='".$sala."' WHERE user ='".$name."'";
@$resultado = mysql_query($consulta) or die(mysql_error());
}
}elseif($_POST['t']=="desconectar"){
$consulta = "DELETE FROM online WHERE user ='".$_POST['user']."'";
$resultado = mysql_query($consulta) or die(mysql_error());
}elseif($_POST['t']=="ver"){
$post=array();
$Sqll = @mysql_query("SELECT * FROM contenido WHERE sala='".$_POST['sala']."' ORDER BY id ASC",$con) or die(mysql_error());
while($dat= mysql_fetch_array($Sqll)){
$mensaje=stripslashes($dat['cont']);
$mensaje = str_replace("[b]","<b>",$mensaje) ; $mensaje = str_replace("[/b]","</b>",$mensaje) ;
$mensaje = str_replace("[img]","<img src="",$mensaje) ; $mensaje = str_replace("[/img]","" border="0" onerror=this.onerror='this.src='';'>",$mensaje) ;
$mensaje = preg_replace("/\[color=((#)?[0-9a-z]+)\]/i","<font color="\\1">",$mensaje) ; $mensaje = str_replace("[/color]","</font>",$mensaje) ;
$mensaje = preg_replace("/\[color=((#)?[0-9a-z]+)\]/i","<font color="\\1">",$mensaje) ; $mensaje = str_replace("[/color]","</font>",$mensaje) ;
$mensaje = preg_replace("/\[url\](www\..+)\[\/url\]/i","<a href="http://\\1" target="_blank">\\1</a>",$mensaje) ;
$mensaje = preg_replace("/\[url\](.+)\[\/url\]/i","<a href="\\1" target="_blank">\\1</a>",$mensaje) ;
$mensaje = preg_replace("/\[url=(www\..+)\](.+)\[\/url\]/i","<a href="http://\\1" target="_blank">\\2</a>",$mensaje) ;
$mensaje = preg_replace("/\[url=(.+)\](.+)\[\/url\]/i","<a href="\\1" target="_blank">\\2</a>",$mensaje) ;
$mensaje = str_replace("[i]","<i>",$mensaje) ; $mensaje = str_replace("[/i]","</i>",$mensaje) ;
$mensaje = str_replace("[u]","<u>",$mensaje) ; $mensaje = str_replace("[/u]","</u>",$mensaje) ;
$post[]='<strong>'.$dat['name'].':</strong> '.$mensaje;
}
if(!empty($post))
echo implode('<br>',$post);
else
echo "No hay comentarios.";
echo '<div id="ultimo"></div>';
}elseif($_POST['t']=="insert"){
$name=$_POST['name'];
$fecha=@date('d-m-Y');
$sala=$_POST['sala'];
$cont=nl2br(addslashes(strip_tags($_POST['cont'])));
$campos=array('name','fecha','cont','sala');
$datos=array( $name, $fecha ,$cont, $sala);
$c=implode(',',$campos);
$d='''.implode("','",$datos).''';
$sSQL=sprintf("INSERT INTO %s (%s) VALUES (%s)","contenido",$c,$d);
$query = mysql_query($sSQL);
$n=mysql_num_rows(mysql_query("SELECT * FROM online WHERE user='".$name."'"));
if($n==0){
$campos=array('time','user','sala');
$datos=array(  (time())+$seg_inac,$name,$sala);
$c=implode(',',$campos);
$d='''.implode("','",$datos).''';
$sSQL=sprintf("INSERT INTO %s (%s) VALUES (%s)","online",$c,$d);
$query = mysql_query($sSQL);
}elseif($n==1){
$consulta = "Update online set time='".(time()+$seg_inac)."', sala='".$_POST['sala']."' WHERE user ='".$name."'";
@$resultado = mysql_query($consulta) or die(mysql_error());
}
}
}
?>


Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /index.php on line 43

voy a esa linea y cambio las comillas sencillas por las dobles y se quita ese error pero sigue este otro.

Parse error: syntax error, unexpected '"' in /index.php on line 59

y en ese si me he quedado, le cambio de todo y nada, le busco por aquí por ayá y nada, si alguien me puede ayudar en que cosa está mal y si hay alguna manera o un programa como un IDEL o algo así para dfepurar mas facil los errores, xD

gracias

Cita de: Linea 43
Código: php
<?php
$d = implode("','",$datos);
?>


Cita de: Linea 59
Código: php
<?php
$mensaje = str_replace("[img]","<img src=\"\"",$mensaje);
$mensaje = str_replace("[/img]"," border=\"0\" onerror=this.onerror='this.src='';'>",$mensaje) ;
?>


Las comillas son los problemas, probablemente ocupes hacer la misma dinámica con todas.

P.D. Atento a las \ que puse para poder poner " A: \"nanan\"", siempre se pone un \ para escapar y que no de error en caso de usar el mismo tipo de comillas en la cadena, saludos.
Cada vez que me das Karma me motivas

Puedes saber exactamente tu error...
CitarParse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /index.php on line 43

No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

muchas gracias a todos por responder, tengo otra duda, que significa los
Código: php
//\\


esque ahora me muestra un error de "\" según la tabla que me facilitó nuestro amigo Yoga, pero la forma que visualmente veo que se arregla es dandole espaciuo a el 1 (uno) que hay en este codigo.
Código: php
$mensaje = preg_replace("/\[color=((#)?[0-9a-z]+)\]/i","<font color="\\1">",$mensaje) ; $mensaje = str_replace("[/color]","</font>",$mensaje) ;

en el font color="\\1" le doy un espacio para que quede font color="\\1 " y así me muestra de nuevo los colores de los strings y todo lo demas comosupuestamente tiene que ser, xD

pero entonces quisiera saber que significa los \\ y //\\ y demas que hay en ese codigo, gracias (en el codigo anterior que les dejé. por si acaso ayuda mas es un chat el que quiero ver, sino que no me va, y el que publicaron acá tampoco, xD

Cuando utilizas expresiones regulares  en PHP, es necesario utilizar delimitadores, que sirven para indicar donde inicia y termina el patrón(La expresión regular). Mayormente se utiliza las Barras
Citar/Regexp/
.

Igual se puede utilizar @, y otros caracteres mas.

Citar/\[
El primer carácter es una barra /, que indica el inicio del patrón(La expresión regular). El segundo es una barra invertida que sirve para escapar un caracter, en este caso un [, ya que si nose escapa el [, no seria un string sino un campo de carácter.



Te recomiendo que no copies partes de códigos porque no sabes lo que hace y por lo tanto, no tienes mucha idea de como solucionar problemas que ocasionan.

Si no sabes utilizar expresiones regulares, aprende porque sera tu mejor amigo a la hora de parsear datos, como es el caso.

Aquí una buena pagina para que vayas testeando tus Expresiones Regulares:

No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Saludos.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.


No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Gracias YOGA

lol no le cambiees el nick xD
¡< blozzter >!