resulta que en una pagina me he encontrado con este codigo y al ponerlo en el servidor, me manda a error
<?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
<?php
$d = implode("','",$datos);
?>
Cita de: Linea 59
<?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.
Puedes saber exactamente tu error...
CitarParse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /index.php on line 43
http://www.php.net/manual/es/tokens.php
muchas gracias a todos por responder, tengo otra duda, que significa los //\\
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.
$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:
http://regex.larsolavtorvik.com/
Saludos.
Gracias YOGA
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
Gracias YOGA
lol no le cambiees el nick xD