Author Archive

Procesa url de videos youtube usando PHP

Escrita por UTAN, 9 enero 2011 (0) Comentario

PHP, el lenguage de la web.Bueno,
Andaba buscando la manera de mostrar videos de youtube para mi chat, que es basado en phpfreechat, y resulte con un código en PHP, usando la funcion preg_match().

Fácilmente me resulto factible Procesar un url de videos Youtube que tus usuarios peguen, en el chat ya ahora los usuarios pueden pegar la URL de youtube y el chat muestra el vídeo automáticamente,
sin embargo no solo puede trabajar para phpfreechat sino que en cualquier tipo de script que obtenga información de los usuarios, por ejemplo :
Una Forma de HTML, usando $_POST[] o $_GET[] array de PHP, o alguna pagina que reciba input de los usuarios…se las dejo haber si les sirve..

<?php
/** Created by UTAN aka re*s.t.a.r.s.*2 Neu Valle */

function parseyoutubevid($text){
  // algunos settings para el tamaño del video
  $height=250;
  $width=250;
  $MatchThis='/[\\?\\&]v=([^\\?\\&]+)/';
  if(preg_match($MatchThis,$text,$matches))
  {
	// no queremos un enlace como este php?v= sea visto como youtube video!.
	if(strlen($vidid=$matches[1]) == 11){
    $youtuvideo="<object width=".$width." height=".$height."><param name=\"movie\" value=\"http://www.youtube.com/v/".$vidid."&hl=en&fs=1&rel=0\">
    </param><param name=\"allowFullScreen\" value=\"true\">
    </param><embed src=\"http://www.youtube.com/v/".$vidid."&hl=en&fs=1&rel=0\"
    type=\"application/x-shockwave-flash\" allowfullscreen=\"true\" width=".$width." height=".$height."></embed></object>";
	return $youtuvideo;
	}else{
	return $text;// no paso el text de el ID de youtube..
	}
  }else{
  return $text;// retornamos el texto pues no es un video youtube.
    }
}
?>

Cambias algunos settings para el tamaño del video”
$height=250;
$width=250;
$height la altura del video y $width la parte ancha del video, simplemente cambiándolos te da mas control del tamaño del video sin necesidad de cambiar el output the html.
Ahora podes llamar la función ejemplo:

<?php
$UserURL=trim($_POST['formInput']); // creamos la variable i quitamos espacios.
$UserURL=htmlentities($UserURL);// un poco de limpieza, aunque debes de hacer mas por tu parte..

// lo tenemos todo, pasemos a llamar la función..

echo parseyoutubevid($UserURL);
?>

Creamos el texto usando el Super Global de PHP POST, lo limpiamos y lo pasamos a la función, esta detecta el ID de el URL escrito por el usuario y te printea el resultado usando el ECHO de PHP..
Bueno, ya tenemos el video y todos contentos … comenta porfavor..

Categorias : Guias para la Web,php y algo mas,Un poco de html Etiquetas :

Registration system for phpfreechat

Escrita por UTAN, 27 noviembre 2010 (2) Comentarios


Hola a todos,

Como phpfreechat es un chat bastante usado en la web, i que además es fácil de instalar y usar ayudándote como webmaster a tener un chat rápido y sin ninguna complicación, solo lo subes en un folder como quieras llamarle y le das permisos 777 a el folder ./DATA y echo te vas a tu explorador y lo abres y ya estas chateando..
Lo desafortunado de el script esque no tiene una sistema de registracion , pues bueno me decidí a crear una y tengo como resultado un sistema completo de registracion que evita que otros usuarios que entren al chat, utilicen el nombre o nick de otro usuario registrado..
El script permite que entren como anónimos al chat pero chequea que el nombre no este registrado con eso te da un completo manejo del chat no mas personas que personifiquen a otra o el moderador.. que dolor…
Requerimientos mínimos:
Los privilegios mínimos del usuario de mysql son:

* SELECT, CREATE, INSERT, UPDATE,DELETE,FILE.

Lo que hace el script:

1. Registra el nombre y lo salva en una base de datos de mysql.
2. Usuario anónimo , deja entrar al chat anónimamente pero si el nombre escogido como anónimo no esta registrado.
3. La posibilidad de desactivar la opción de usuario anónimo.
4. La registracion de un nombre pero si no usa el mismo correo electrónico , no permite registrar si el correo existe en la base de datos.
5. Restringe el acceso al chat si no esta autorizado a entrar, eliminas la posibilidad de que entren si no an iniciado la sesión que indica o que son anónimos o si están registrados..
6. Ninguna clave de usuario es colocada en la sesión php , en cambio el nombre es encriptado y agregado una sal que es salvada en la base de datos lo cual la clave nunca esta en-riesgo.
7. Cantidad mínimas de caracteres para el nombre que se quiere registrar, así también cantidad máxima.
8. Cantidad mínima de caracteres para la clave , entre mas larga sea la clave mas difícil de dar con ella si quieren usar fuerza bruta y diccionarios .

Prosigamos a la instalación :

1. Descarga el login.rar.
2. Descomprime lo y los subes al folder donde esta tu chat, ejemplo ./chat , entonces se vera ./chat/login .
3. Crea una base de datos de mysql y asegura que el usuario que se conecta a esa base de datos tenga los permisos siguientes: SELECT, CREATE,INSERT,UPDATE,DELETE,FILE.
4. Ahora abre el documento php localizado en ./login/settings.php ,edita los siguientes parámetros: $hostServer=”localhost”; // la direccion del servidor mysql.
$MysqlUser=”phpfreechat”; // el nombre del usuario de mysql.
$MysqlPass=”somepass”; // la clave de usuario del msql.
$DataBaseName=”MiBaseDeDatos”; // cambia a la base de datos que creaste en el paso 3.
5. Una ves tienes todo creado, base de datos y sabes que el usuario con el cual te conectaras a la base de datos tiene suficiente permisos, seguimos.
6. Dirígete a tu website y instala las tablas en la base de datos yendo a ejemplo: http://miwebsite.com/chat/login/install.php .
7. Si todo salio bien este habrá instalado las tablas automáticamente y te habrá dicho esto, además te mostrara el enlace a el login.php , si te da algún error entonces revisa todo los pasos otra vez.
8. ahora en el folder ./login se encuentra un documento llamado index.phpfreechat, re/nombralo a index.php y sube lo o arrástralo a la raíz de tu chat reescribiendo en antiguo por la versión nueva , este paso es muy importante porque se hace pruebas de validación a el usuario.
9. Echo todo lo anterior y con un nombre ya registrado , identificate si todo coincide el chat te dirigirá al chat con tu nick. ahora solo abre settings.php y edita el administrado el lenguaje y otros parámetros .

Todo esta completado, si quieres probar el chat y el sistema de registracion; sigue este enlace a el chat que esta instalado en este sitio.. dale clic al enlace DEMO CHAT usuario anónimo esta habilitado.

Sugerencias o problemas con el script por favor házmelo saber.. gracias

Si quieren chequear el code:

<?php
  /**
* Created by Neu Valle Aka UTAN, RE*S.T.A.R.S.*2 emails:vcomputadoras@yahoo.com, utan@radioscatrachas.info.
* features are: checks username is in use, email in use
* checks username minimun characters, checks password minimun length,
* checks maximun username characters, guest login.
* Password and usernames are encrypted with sha1 one way hashing and salted.
* Created specially for phpfreechat, forviden the use in other project without explicit permition.
* If you like the script, I only ask to put a link back to my sites radioscatrachas.info, vcomputadoras.com
*/
  require_once('settings.php');

  if(!isset($_SESSION)){
  session_start();}

  function IsAuthorized(){
     // N_V- lets call the database.
     global $connect,$DataBaseName;
     // N_V- lets check if at least we got some session to play with.
	if(isset($_SESSION['loggeduser']))
	{
	 // N_V- we set the username from session loggeduser to check in mysql
	 $username=$_SESSION['loggeduser'];
	 // N_V- check if connected.
     if($connect)
	 {
	  // N_V- We dont know if someone can inject something in the session, so lets clean for Mysql injection
	  $username=mysql_real_escape_string(stripslashes($username));
      mysql_select_db($DataBaseName, $connect);
      $query = "SELECT salted FROM $DataBaseName WHERE username='$username'";
      $result= mysql_query($query);
	  while($row=mysql_fetch_array($result)){
	  $salted=$row['salted'];
	  }
      // N_V- Since we made the firsts test with loggeduser session and we have got here
	  // N_V- we check if username that session holds is the same one we used
	  // N_V- in LoggedInUser function and we do so checking against the hashed name and the salt we saved in MSQL ..
      if(sha1(sha1($username).$salted) == $_SESSION['hashedname'])
	  {
	  return $username;
	  mysql_close($connect);
	  }
	 }
	}else
	{
	  // N_V- check guestlogin session, not really important in security.
	if(isset($_SESSION['guestlogin']))
	{
	  $GuestUsernick=$_SESSION['guestlogin'];
	  return $GuestUsernick;
	}else
	{
	  // N_V- none of them exist, then lets return false
	  return false;
	}
    }
   }

  function LoggedInUser($username,$password,$guestlogin,$remember){
  global $MinUserlength,$MaxUserlength,$MinPasslength,$connect,$DataBaseName;
     // N_V- check if connected.
    if($connect)
	{
	 // N_V- check if user is a guest to the system, if not ticked the box then he has a password
	 if($guestlogin != TRUE)
	 {
	 if(!empty($password))
	 {
	 /*If magic_quotes_gpc is enabled (good Idea, php.ini), first apply stripslashes() to the data.
       Using this function on data which has already been escaped will escape the data twice. */
     $username=mysql_real_escape_string(stripslashes($username));
	 $password=mysql_real_escape_string(stripslashes($password));// N_V- not needed we only checking $username var
     $remember=mysql_real_escape_string(stripslashes($remember));// N_V- not needed
     mysql_select_db($DataBaseName, $connect);
     $query = "SELECT * FROM $DataBaseName WHERE username='$username'";
     $result= mysql_query($query);
	 // N_V- check is a username exist in database, if not give then an error
	 // N_V- otherwise he wouldnt get any response from script, because the username doesnt exist..
	 if(mysql_num_rows($result) < 1)
	 {
	 // N_V- lets give it a simple error if no username exist, no more info to them.
	 echo '<p id="error">Sorry username and or password are incorrept.</p>';
	 }
	 // N_V- lets iterate tru users table and return it into array.
     while($row=mysql_fetch_array($result)){
	 // N_V- lets put the array results in variables for easy understanding, I like simple stuff
	 $sqlUsername=$row['username'];
	 $sqlhashedname=$row['hashedname'];
	 $sqlEncryptedPass=$row['password'];
	 $sqluserID=$row['ID'];
	 // N_V- lets compare the password we got from form, double hash it and salt it..
	 $password=sha1(sha1($password).$row['salted']);
	 // N_V- then compare the one we got when we registered..
     if($password == $sqlEncryptedPass)
	 {
     // N_V- check if remember box is ticked and put it then in cookies
     // N_V- I have problems with cookie errors, can write cookie because header is already sent..
	 // N_V- in the meantime, phpfreechat dont like other thing but session cookies, so wont do.
     /*if($remember == TRUE){
	 $time=time()+3600000*24;
	 $username=$sqlUsername;
	 $hasedname=$sqlhashedname;
	 setcookie("userlogged",$username,$time);
	 setcookie("hashed",$hasedname,$time);
	 }else{*/
     // N_V- here we put it in the session
	 $_SESSION['loggeduser']=$sqlUsername;
	 $_SESSION['hashedname']=$sqlhashedname;
	 $_SESSION['ID']=$sqluserID;
	 mysql_close($connect);
	 echo "<script>location.href='../'</script>";
	 //echo "<p id=\"okgo\">Corrept you are logged_in now <span class=\"highlight\">$sqlUsername</span>.</p>";
	 // N_V- bracket part of the $remember if}
     }else{
	 // N_V- error the pass doesnt match really..
	 echo '<p id="error">Sorry username and or password are incorrept.</p>';
	 mysql_close($connect);
	 }
     }
	 }else{
	 echo'<p id="error">Please fill up the password field.</p>';
	 }
	 }else{
	 // N_V- if he thicked he is trying to be guest, lets check username is registered already.
	 if(!IfUserExist($username)){
	 if(strlen($username) >= $MinUserlength){
	 if(strlen($username) <= $MaxUserlength){
	 $username=htmlentities(stripslashes($username));
	 // N_V- we dont want this again rigth even if he is a guest.
	 $NotwantedStrings=array(
     ',','`','|','~','!','#','$','%','^','&','*','(',')','-','+','{','}','[',']','?','@','.','<','>','='
     );
     $ReplacewithString='_';
     $username=filter_var(str_replace($NotwantedStrings,$ReplacewithString,$username),FILTER_SANITIZE_STRING);
	 $_SESSION['guestlogin']="[$username]";// N_V- [] prefix so we identify this guest..
	 $guestlogin=$_SESSION['guestlogin'];
	 echo "<script>location.href='../'</script>";
	 // echo "<p id=\"okgo\">Corrept you are logged_in now <span class=\"highlight\">$guestlogin</span>.</p>";
	 }else{
	 echo "<p id=\"error\">Guest login nikname is too long, please choose a shorter one less than $MaxUserlength words..</p>";
	 }
	 }else{
	 echo "<p id=\"error\">Guest login nikname is too short, please choose one of at least $MinUserlength words..</p>";
	 }
	 }else{
	 echo '<p id="error">Sorry cant use that nickname.</p>';
	 }
	 }
     }else
	 {
	 // N_V- connection problem we die and then tell the user.
     die('<p id="error">Error: </p>' . mysql_error());
     }
     }

   function IfUserExist($username){
     // N_V- lets call the database.
     global $connect,$DataBaseName;
     // N_V- check if connected.
     if($connect)
	 {
	 $username=mysql_real_escape_string(stripslashes($username));
     mysql_select_db($DataBaseName, $connect);
     $query = "SELECT username FROM $DataBaseName WHERE username='$username'";
     $result= mysql_query($query);
     if(mysql_num_rows($result) > 0)
	 {
     return true;
	 mysql_close($connect);
     }else{
     return false;
     }
     }else{
     die('<p id="error">Error: </p>' . mysql_error());
     }
     }

   function IfEmailExist($email){
     // N_V- lets call the database.
     global $connect,$DataBaseName;
     // N_V- check if connected.
     if($connect)
	 {
	 $email=mysql_real_escape_string(stripslashes($email));
     mysql_select_db($DataBaseName, $connect);
     $query = "SELECT email FROM $DataBaseName WHERE email='$email'";
     $result= mysql_query($query);
     if(mysql_num_rows($result) > 0)
	 {
     return true;
	 mysql_close($connect);
     }else{
     return false;
     }
     }else{
     die('<p id="error">Error: </p>' . mysql_error());
     }
     }

   function RegisterUser($username, $password, $email){
   global $MinUserlength,$MaxUserlength,$MinPasslength,$connect,$DataBaseName;;
     $salted=saltedPass();

     // N_V- check if connected.
    if($connect)
	{
	 // N_V- minimun username length is checked here
     if(strlen($username) >= $MinUserlength)
	 {
     if(strlen($username) <= $MaxUserlength)
	 {
	 // N_V- minimun password length is checked here
     if(strlen($password) >= $MinPasslength)
	 {
	 // N_V- check if email exist here
     if(!IfEmailExist($email))
	 {
	 // N_V- check if username exist here
     if(!IfUserExist($username))
	 {
     // N_V- lets clean up a litle bit,check for hacking attempts and mysql injection on username,password and email.
     $username =mysql_real_escape_string(stripslashes($username));
     $password=mysql_real_escape_string(stripslashes($password));
     // N_V- We dont want this string in the usernick rigth?
     $NotwantedStrings=array(
     ',','`','|','~','!','#','$','%','^','&','*','(',')','-','+','{','}','[',']','?','@','.','<','>','='
     );
     $ReplacewithString='_';
     $username=filter_var(str_replace($NotwantedStrings,$ReplacewithString,$username),FILTER_SANITIZE_STRING);
     $hashedname=sha1($username);
     $email=mysql_real_escape_string(stripslashes($email));
     // N_V-lets encrypt form input password and username
     $hashedname=sha1(sha1($username).$salted);
     $password= sha1(sha1($password).$salted);

     // N_V- once cleaned lets insert it into database
     mysql_select_db($DataBaseName, $connect);
     $SqlWrite=mysql_query("INSERT INTO $DataBaseName(username,hashedname,password,salted,email)
     VALUES('$username','$hashedname','$password','$salted','$email')");
     if (!$SqlWrite)
     {
     die('<p id="error">Error: </p>' . mysql_error());
     }
     mysql_close($connect);
	 // N_V- once register is susscess send them to the login page.
	 echo "<script>location.href='./login.php'</script>";
     echo "<p id=\"okgo\">You have been registered sussefuly <span class=\"highlight\">$username</span>.</p>";
	 }else{
     echo "<p id=\"error\">Sorry <span class=\"highlight\">$username</span> is registered already..</p>";
     }
     }else{
     echo "<p id=\"error\">Sorry the email: <span class=\"highlight\">$email</span> is already in use..</p>";
     }
     }else{
     echo "<p id=\"error\">Choose a password at least <span class=\"highlight\">$MinPasslength</span> word long please!..</p>";
     }
	 }else{
	 echo "<p id=\"error\">Your username cannot be more that <span class=\"highlight\">$MaxUserlength</span> characters!</p>";
	 }
     }else{
     echo "<p id=\"error\">Choose a username at least <span class=\"highlight\">$MinUserlength</span> word long please!..</p>";
     }
    }else
	{
     die('<p id="error">Error: </p>' . mysql_error());
    }
   }

   function saltedPass(){
     $salted = '';
     // N_V-lets create our 3 words salt.
     for ($i = 0; $i < 3; $i++)
	 {
          $salted .= chr(rand(35, 126));
     }
          return $salted;
	}
?>

register.php

 <?php
require_once('functions.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en-US" xml:lang="en-US" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><?php echo $rftitle; ?></title>
<link rel="stylesheet" href="login.css" type="text/css" />
</head>
<body>
<div id="register_form">
<form class="register_form" action="register.php" method="post">
<h5 class="welcome"><?php echo $rfH5title; ?></h5>
  <span class="rform"><?php echo $rfnick; ?></span> <input type="text" name="username" />
  <br />
  <span class="rform"><?php echo $rfpass; ?><span> <input type="password"  name="password" />
  <br />
  <span class="rform"><?php echo $rfrpass; ?><span> <input type="password" name="repassword" />
  <br />
  <span class="rform"><?php echo $rfmail; ?></span> <input type="text" name="email" />
  <br />
  <?php echo $rfrfield; ?>
  <input type="submit" value="Submit" />
  <input type="hidden" name="submitted" value="true" />
  <?php echo $rfp; ?>
 <?php
 // N_V- lets put all Post array in variables for easy understanding
 $username=trim($_POST['username']);
 $password=trim($_POST['password']);
 $repassword=trim($_POST['repassword']);
 $email=trim($_POST['email']);
 if($_POST['submitted'] == "true")
 {
  if(empty($username))
  {
  echo '<p id="error">Please fill up the username field.</p>';
  }elseif(empty($password)){
  echo'<p id="error">Please fill up the password field.</p>';
  }elseif(empty($repassword)){
  echo'<p id="error">Please fill up the repassword field.</p>';
  }elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)){
  echo '<p id="error">E-mail, is invalid.</p>';
  }
  // N_V- check if password match, could also been done in the RegisterUser function
  elseif($password != $repassword){
  echo '<p id="error">The password doesnt match, please retype it again!!</p>';
  }else{
   RegisterUser($username, $password, $email);
  }
 }
 ?>
 <?php echo $phpfreechatlogo; ?>
 </form>
</div>
</body>
</html>

login.php

<?php
require_once('functions.php');
if(isset($_SESSION['loggeduser']) OR ($_SESSION['guestlogin'])){setcookie(session_name(), '', time()-42000, '/');}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en-US" xml:lang="en-US" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><?php echo $lftitle; ?></title>
<link rel="stylesheet" href="login.css" type="text/css" />
</head>
<body>
<div id="login_form">
<form class="login_form" action="<?php $PHP_SELF; ?>" method="post">
  <h5 class="welcome"><?php echo $lfH5title; ?></h5>
  <span class="lform"><?php echo $lfnick ;?></span> <input type="text" name="username" />
  <br />
  <span class="lform"><?php echo $lfpass; ?></span> <input type="password" name="password" />
  <br />
  <?php if($guestlogin){
  echo "<span class=\"lform\">$lfguest</span><input type=\"checkbox\" name=\"guestlogin\" value=\"$guestlogin\" /><br />";
  $guestlogin=trim($_POST['guestlogin']);
  } ?>
  <input type="hidden" name="submitted" value="true" />
  <input type="submit" value="Submit" />
  <?php echo $lfp; ?>

  <?php
    $username=trim($_POST['username']);
    $password=trim($_POST['password']);
    $remember=trim($_POST['remember']);

  if($_POST['submitted'] == "true")
  {
   if(empty($username)){
   echo'<p id="error">Please fill up the username field.</p>';
   }else{
   LoggedInUser($username, $password,$guestlogin,$remember);
   }
  }
?>
  <?php echo $phpfreechatlogo; ?>
<form>
</div>
</body>
</html>

login.css

/*
*Created by Neu Valle Aka utan, re*s.t.a.r.s.*2
*This is the css for the login and registration form
*/
#error{
color:red;
}
#okgo{
color:#666699;
}
.w-h{
  color:#CCFF99;
  font-size:13px;
  }
.w-p{
  color:#FFFF66;
  font-size:12px;
}
.highlight{
color:blue;
font-size:14px;
}
.rform{
color:#9966FF;
font-size:13px;
}
.lform{
color:#9966FF;
font-size:13px;
}
body{
background-color:#330000;
background-image:url('./img/dgren002.jpg');
padding:0;
margin:0;
}
.welcome{
text-align:center;
color:#666699;
}
/*style for Registration form*/

#register_form{
background-color:#330000;
background-image:url('./img/dgren007.jpg');
position:absolute;
*height:400px;
top:50px;
left:430px;

}
.register_form{
 border: 1px solid #666699;
 padding: 5px;
 *height:390px;
 width:150px;
}
.register_form input{
}
.register_form p{
font-size:12.5px;
color:#666699;
}
.register_form a{
text-decoration:none;
font-size:12px;
color:#666699;
}
.register_form a:hover{
color:#FF6666;
text-decoration:underline;
}
.phpfreechatlogo{
background-image:url('./img/logo2_80x15.png');
margin-left:70px;

}
/*style for login form*/
#login_form{
background-color:#330000;
background-image:url('./img/dgren007.jpg');
position:absolute;
top:50px;
left:430px;
}
.login_form{
 border: 1px solid #666699;
 padding: 5px;
 width:150px;
}
.login_form input{
}
.login_form p{
font-size:12.5px;
color:#666699;
}
.login_form a{
text-decoration:none;
font-size:12px;
color:#666699;
}
.login_form a:hover{
color:#FF6666;
text-decoration:underline;
}

index.phpfreechat to be renamed for index.php and placed in /chat

 <?php
require_once('./login/functions.php');
require_once dirname(__FILE__)."/src/phpfreechat.class.php";
// we get from function IsAuthorized() the nick that the session holds
// dont discriminate between both guest and registered.
if(IsAuthorized()){$phpfreechatnick=IsAuthorized();}else{header('Location:./login/login.php');}
$params = array();
$params["title"] =$ChatTitle;
$params['channels']=$ChatChannel;
$params["nick"] =$phpfreechatnick;  // setup the intitial nickname
if(!isset($_SESSION['guestlogin']) && ($phpfreechatnick == $administrator)){$params["isadmin"] = TRUE;}
$params["height"] = "$ChatHeight.px";
$params["frozen_nick"] =$frozen_nick;
$params["max_nick_len"] = $maxnicklen;
$params["max_msg"] = $maxmessage;
$params["max_displayed_lines"] = $maxdisplaylines;
$params["short_url"] = $shorturl;
$params["short_url_width"] = $shorturlwidth;
$params['clock'] = $showclock;
$params['theme']= $ChatTheme;
$params['firstisadmin'] =FALSE;
//$params["isadmin"] = true; // makes everybody admin: do not use it on production servers ;)
$params["serverid"] = md5(__FILE__); // calculate a unique id for this chat
$params["debug"] = false;
$chat = new phpFreeChat( $params );

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <title><?php echo $params["title"]; ?></title>
  <link rel="stylesheet" title="classic" type="text/css" href="style/generic.css" />
  <link rel="stylesheet" title="classic" type="text/css" href="style/header.css" />
  <link rel="stylesheet" title="classic" type="text/css" href="style/footer.css" />
  <link rel="stylesheet" title="classic" type="text/css" href="style/menu.css" />
  <link rel="stylesheet" title="classic" type="text/css" href="style/content.css" />
  <link rel="stylesheet" title="classic" type="text/css" href="./login/login.css" />
 </head>
 <body>

<div class="header">
      <img alt="phpFreeChat" src="style/logo.gif" class="logo2" />
</div>

<div class="menu">
      <div style="background-color:#669933;">
    <p class="sub title"><?php echo $phpfreechatnick; ?></p>
    <?php if(!isset($_SESSION['loggeduser'])){
     echo "<h4 class=\"w-h\">Welcome $phpfreechatnick</h4>";
   echo '<p class="w-p">You are in the chat as guest.</p>';
   echo '<p class="w-p">Please <a href="./login/login.php" onclick="pfc.connect_disconnect()">Login</a></p>';
   }else{
   echo "<h4 class=\"w-h\">Welcome $phpfreechatnick</h4>";
   echo '<p class="w-p">Thank you enjoy the chat.. <a href="./login/login.php" onclick="pfc.connect_disconnect()" >Logout</a></p>';
   }
   ?>
    </div>
      <ul>
        <li class="sub title">General</li>
        <li>
          <ul class="sub">
            <li class="item">
              <a href="">Demos</a>
            </li>
            <?php if (file_exists(dirname(__FILE__)."/checkmd5.php")) { ?>
            <li>
              <a href="">Check md5</a>
            </li>
            <?php } ?>
            <!--
            <li class="item">
              <a href="admin/">Administration</a>
            </li>
            -->
          </ul>
        </li>
        <li class="sub title">Documentation</li>
        <li>
          <ul>
            <li class="item">
              <a href="">Overview</a>
            </li>
            <li class="item">
              <a href="">Quickstart</a>
            </li>
            <li class="item">
              <a href="">Parameters list</a>
            </li>
            <li class="item">
              <a href="">FAQ</a>
            </li>
            <li class="item">
              <a href="">Advanced configuration</a>
            </li>
            <li class="item">
              <a href="">Customize</a>
            </li>
          </ul>
        </li>
      </ul>
      <p class="partner">
        <a href="http://www.phpfreechat.net"><img alt="phpfreechat.net" src="style/logo_88x31.gif" /></a><br/>
      </p>
</div>

<div class="content">
  <?php $chat->printChat(); ?>
</div>

<div class="footer">
  <span class="partners">phpFreeChat partners:</span>
  <a href="">jeux gratuits</a> |
  <a href="">jeux flash</a> |
  <a href="">pronofun</a> |
  <a href="">areno</a> |
  <a href="">micropolia</a> |
  <a href="">zeitoun</a> |
  <a href="">federation</a>
</div>

</body></html>
Categorias : Guias para la Web,Noticias Destacadas,php y algo mas,Un poco de html Etiquetas :

Integrar AjaxChat con WordPress

Escrita por UTAN, 26 octubre 2010 (21) Comentarios

Bueno,
Hace algun tiempo buscaba un chat script que fuera bueno y gratis y que pudiera conectarse a la base de datos de WordPress, pues bueno me encontré con algunos y me gustaron 2 que son:

El primero es excelente si tienes un foro la version actual ajax_chat-0.8.3, utiliza ajax para actualizar el contenido en el chat, además lo podes usar con el Comet socket que es escrito en Ruby y que te ayuda a tener mas de 100 personas chateando, el problema con el que me enfrente al querer usar este chat script, fue el que no había una integración a wordpress , pues es mas para foros scripts entonces decidí que no era el mas adecuado, me decidí a usar PHPFREECHAT el cual uso, pero días atrás decidí probar el chat AJAXCHAT y ahora que entiendo un poco mas de PHP decidí que era hora de tratar de integrarlo.

Esta integración fue probada para WordPress 2.92 pero debería funcionar para versiones mas actuales i o versiones mas antiguas..
Tiene auto login, administración y moderación, guest login (detecta si el nick que se quiere usar ya esta registrado en WordPress, si lo esta te da un error y no te permite entrar al chat.. …

Sigue los siguiente para hacer la integración usaremos la versión mas actual que es ajax_chat-0.8.3..

  1. Instala el chat de la forma básica, sigue el procedimiento que indica el Readme.txt que esta en archivo de instalación del script de phpfreechat.
  2. La integración esta echa de forma tal que el el archivo del ajaxchat esta en el la raíz del sitio web.. ejemplo “www.tusitio.com/chat ” y los documentos tu blog esta sentado en un folder llamado blog en la raiz de tu sitio ejemplo “www.tusitio.com/blog/”.
  3. Abre el archivo “lib” que se localiza en -> ” /chat/lib/ ” en este archivo encontraras un documento php llamado “custom.php” ábrelo con tu editor php que uses, recomiendo notepad++ para la edición de cualquier archivo php, html, etc.. en el copiamos lo siguiente:
    <?php
    /*
     * @package AJAX_Chat
     * @author Sebastian Tschan
     * @copyright (c) Sebastian Tschan
     * @license GNU Affero General Public License
     * @link https://blueimp.net/ajax/
     * @Wordpress integration by Neu V aka UTAN
     */
    
    // Include custom libraries and initialization code here
    require_once('../blog/wp-config.php');
    require_once(ABSPATH . WPINC . '/registration.php');
    $current_user = wp_get_current_user();
    $user_name = addslashes($current_user->display_name);
    $user_id=($current_user->ID);
    ?>
    

    Lo que este el código php hace es darle a las variables $user_name, $user_id la información requerida de WordPress que sera pasada al chat, las dos variables son importantes pues son requeridas para dar un nick y el ID de el nick..

  4. Las siguiente parte es abrir el documento php “CustomAJAXChat.php”
    localizado en -> “/chat/lib/class/ “.

    <?php
    /*
     * @package AJAX_Chat
     * @author Sebastian Tschan
     * @copyright (c) Sebastian Tschan
     * @license GNU Affero General Public License
     * @link https://blueimp.net/ajax/
    * @Wordpress integration by Neu V aka UTAN
     */
    
    class CustomAJAXChat extends AJAXChat {
    	 // lets allow auto login to wp users.
       function initCustomRequestVars(){
       if(!$this->getRequestVar('logout') && (is_user_logged_in())) {
          $this->setRequestVar('login', true);
          }
        }
    
       	function getValidLoginUserData() {
    	// globalize the important variables from WP
    	global $user_name,$user_id;
            // Check if we have a valid registered user:
    		$customUsers = $this->getCustomUsers();
            if(is_user_logged_in()){
    		$userData = array();
            $userData['userID'] =$user_id;
            $userData['userName'] =$user_name;
    		$user_name=$this->trimUserName($userData['userName']);
    		 if(current_user_can('delete_posts'))
                    $userData['userRole'] = AJAX_CHAT_ADMIN;
                     elseif($user_name == "NOMBRE")// convierte a admin
                    $userData['userRole'] = AJAX_CHAT_MODERATOR;
    				else
                    $userData['userRole'] = AJAX_CHAT_USER;
                    return $userData;
    		}// Check if we have a valid registered user using the ajax chat form:
    		elseif($this->getRequestVar('password')) {
    			$userName = $this->getRequestVar('userName');
    			$userName = $this->convertEncoding($userName, $this->getConfig('contentEncoding'), $this->getConfig('sourceEncoding'));
    
    			$password = $this->getRequestVar('password');
    			$password = $this->convertEncoding($password, $this->getConfig('contentEncoding'), $this->getConfig('sourceEncoding'));
    
    			foreach($customUsers as $key=>$value) {
    				if(($value['userName'] == $userName) && ($value['password'] == $password)) {
    					$userData = array();
    					$userData['userID'] = $key;
    					$userData['userName'] = $this->trimUserName($value['userName']);
    
    					$userData['userRole'] = $value['userRole'];
    					return $userData;
    				}
    			}
    
    			return null;
    		}else{
                // Guest users:
                return $this->getGuestUser();
            }
    
        }
    
    	// Store the channels the current user has access to
    	// Make sure channel names don't contain any whitespace
    	function &getChannels() {
    		if($this->_channels === null) {
    			$this->_channels = array();
    
    			$customUsers = $this->getCustomUsers();
    
    			// Get the channels, the user has access to:
    			if($this->getUserRole() == AJAX_CHAT_GUEST) {
    				$validChannels = $customUsers[0]['channels'];
    			} else {
    				//$validChannels = $customUsers[$this->getUserID()]['channels'];
    				$validChannels = $customUsers[0]['channels'];
    			}
    
    			// Add the valid channels to the channel list (the defaultChannelID is always valid):
    			foreach($this->getAllChannels() as $key=>$value) {
    				// Check if we have to limit the available channels:
    				if($this->getConfig('limitChannelList') && !in_array($value, $this->getConfig('limitChannelList'))) {
    					continue;
    				}
    
    				if(in_array($value, $validChannels) || $value == $this->getConfig('defaultChannelID')) {
    					$this->_channels[$key] = $value;
    				}
    			}
    		}
    		return $this->_channels;
    	}
    
    	// Store all existing channels
    	// Make sure channel names don't contain any whitespace
    	function &getAllChannels() {
    		if($this->_allChannels === null) {
    			// Get all existing channels:
    			$customChannels = $this->getCustomChannels();
    
    			$defaultChannelFound = false;
    
    			foreach($customChannels as $key=>$value) {
    				$forumName = $this->trimChannelName($value);
    
    				$this->_allChannels[$forumName] = $key;
    
    				if($key == $this->getConfig('defaultChannelID')) {
    					$defaultChannelFound = true;
    				}
    			}
    
    			if(!$defaultChannelFound) {
    				// Add the default channel as first array element to the channel list:
    				$this->_allChannels = array_merge(
    					array(
    						$this->trimChannelName($this->getConfig('defaultChannelName'))=>$this->getConfig('defaultChannelID')
    					),
    					$this->_allChannels
    				);
    			}
    		}
    		return $this->_allChannels;
    	}
    
    	function &getCustomUsers() {
    		// List containing the registered chat users:
    		$users = null;
    		require(AJAX_CHAT_PATH.'lib/data/users.php');
    		return $users;
    	}
    
    	function &getCustomChannels() {
    		// List containing the custom channels:
    		$channels = null;
    		require(AJAX_CHAT_PATH.'lib/data/channels.php');
    		return $channels;
    	}
    
    }
    ?>
    

    El documento contiene un PHP class, dentro de este existen funciones que integran todo el class, las mas importantes para integrar wordpress son las siguientes:

      function initCustomRequestVars()

      Esta funcion que detecta si la sesión esta iniciada , asi cuando una persona a iniciado sesión esta al entrar al chat le da el nick registrado. si no lo envia a la pagina con la donde esta FORMA para inicia sesión..

      function getValidLoginUserData()

      Esta funcion coloca el ID y el nick en un array y lo pasa al chat para que el usuario obtenga su nick registrado, si el nick tiene poderes “delete_posts”=” para borrar post” este se convierte en administrador,
      si quieres dar poderes de moderador a un nick registrado pero sin darle poderes en WordPress entonces edita la linea 31 en CustomAJAXChat.php con el nombre del nick registrado que quieres hacer moderador :

      elseif($user_name == "NOMBRE")

      este se convertir en moderador automáticamente al entrar al chat..

      function &getChannels()

      Esta funcion no es realmente importante para usar el chat en WordPress sin embargo para scripts de foros es la que pasa el canal el cual el usuario pertenece, como por defecto el chat trae el “$config['defaultChannelID'] = 0;” entonces solo pasamos este canal en la funcion ya que WordPress no tiene un canal especial para usuarios, puesto que es un blog… entonces usamos el canal por defecto.

      			if($this->getUserRole() == AJAX_CHAT_GUEST) {
      				$validChannels = $customUsers[0]['channels'];
      			} else {
      // deshabilitamos el canal que espera obtenar del array y ponemos el por defecto.
      				//$validChannels = $customUsers[$this->getUserID()]['channels'];
      				$validChannels = $customUsers[0]['channels'];
      			}
      
  5. Ahora en mismo folder “/chat/lib/class” abrimos el documento “AJAXChat.php” buscamos con el notepad++ la funcion “function getGuestUser()”. Copia y pega el código abajo, desde la linea 3179 hasta la linea 3207, asegurarte de hacerlo bien o php te dara un error fatal, básicamente usamos las funcion username_exists() de wordpress para saber si el nick que se quiere usar esta registrado..
    Este es la parte importante si no quieres pegar toda la función ..

    	// Trim guest userName:
    			// check if usernick choosen as guest is in the WP database.. if its is Deny access.
    			$userName=$this->getRequestVar('userName');
    			if(username_exists($userName)){
    			return null;
    			}

    Si quieres pegar toda la función , copia y pegala empezando desde la linea 3179 hasta la linea 3207 que son las lineas que se encuentran en CustomAJAXChat.php, usa notepad++..

    function getGuestUser() {
    		if(!$this->getConfig('allowGuestLogins'))
    			return null;
    
    		if($this->getConfig('allowGuestUserName')) {
    			$maxLength =	$this->getConfig('userNameMaxLength')
    							- $this->stringLength($this->getConfig('guestUserPrefix'))
    							- $this->stringLength($this->getConfig('guestUserSuffix'));
    
    			// Trim guest userName:
    			// check if usernick choosen as guest is in the WP database.. if its is Deny access.
    			$userName=$this->getRequestVar('userName');
    			if(username_exists($userName)){
    			return null;
    			}
    			$userName = $this->trimString($this->getRequestVar('userName'), null, $maxLength, true, true);
    
    			// If given userName is invalid, create one:
    			if(!$userName) {
    				$userName = $this->createGuestUserName();
    			} else {
    				// Add the guest users prefix and suffix to the given userName:
    				$userName = $this->getConfig('guestUserPrefix').$userName.$this->getConfig('guestUserSuffix');
    			}
    		} else {
    			$userName = $this->createGuestUserName();
    		}
    
    		$userData = array();
    		$userData['userID'] = $this->createGuestUserID();
    		$userData['userName'] = $userName;
    		$userData['userRole'] = AJAX_CHAT_GUEST;
    		return $userData;
    	}
    
  6. Por ultimo para terminar la integración , cambiamos la forma por defecto de el AJAXCHAT para que funcione como la forma de WordPress donde iniciamos sesión:
    Abrimos el folder -> “/chat-ajaxchat/lib/template” y editamos el documento “loggedOut.php” y pegamos la forma abajo .

    <form id="loginForm" action="../../blog/wp-login.php" method="post" enctype="application/x-www-form-urlencoded" onsubmit="return handleLogin();">
    			<div id="loginFormContainer">
    				<input type="hidden" name="login" id="loginField" value="login"/>
    				<input type="hidden" name="redirect" id="redirectField" value="[REDIRECT_URL/]"/>
    				<div><label for="userNameField">[LANG]userName[/LANG]:</label><br />
    				<input type="text" name="log" id="userNameField" maxlength="[USER_NAME_MAX_LENGTH/]"/></div>
    				<div><label for="passwordField">[LANG]password[/LANG]*:</label><br />
    				<input type="password" name="pwd" id="passwordField"/></div>
    				<div><label><input name="rememberme" type="checkbox" id="rememberme" value="forever" tabindex="90" /> Recordar?</label></div>
    				<div><label for="channelField">[LANG]channel[/LANG]:</label><br />
    				<select name="channelName" id="channelField">[CHANNEL_OPTIONS/]</select></div>
    				<div><label for="languageSelection">[LANG]language[/LANG]:</label><br />
    				<select id="languageSelection" name="lang" onchange="ajaxChat.switchLanguage(this.value);">[LANGUAGE_OPTIONS/]</select></div>
    				<div><input type="submit" name="submit" id="loginButton" value="[LANG]login[/LANG]"/></div>
    				<div id="loginRegisteredUsers">* [LANG]registeredUsers[/LANG]</div>
    			</div>
    		</form>
    

    Y despues colocamos en el head tag el javascript que cambia el evento del de la forma, si colocas una clave la informacion suministrada se procesara en el wordpress, si no ponemos ninguna clave la forma procesara los datos con el AJAXCHAT dandole el nick que el usuario escribió si esque el nick no esta “registrado”, si lo esta le dará un error, el cual quiere decir que el nick esta registrado…
    e aqui el codigo javascript “handleLogin()”:

    	    <script type="text/javascript">
    		// <![CDATA[
    		function handleLogin() {
                    var loginForm = document.getElementById('loginForm');
                    var userNameField = document.getElementById('userNameField');
                    var passwordField = document.getElementById('passwordField');
                    var channelField = document.getElementById('channelField');
                    var redirectField = document.getElementById('redirectField');
                    if(passwordField.value.length == 0) {
                        loginForm.setAttribute('action', '[LOGIN_URL/]');
                        userNameField.setAttribute('name', 'userName');
                    } else {
                        var channelRequest = 'channelName=' + encodeURIComponent(channelField.value);
                        var regExp = /\?/;
                        if(regExp.test(redirectField.value)) {
                            redirectField.value += '&';
                        } else {
                            redirectField.value += '?';
                        }
                        redirectField.value += channelRequest;
                    }
                    return true;
                }
    			// ]]>
    	</script>
    

Espero que sea clara la explicación y que no me aya echo bolas, preguntas o algo no entendible en esta GUIA por-favor avisarme para arreglarlo.. si hay bugs en el código porfavor diganmelo.. espero sea útil pues no e visto ninguna integración con wordpress .

Categorias : Guias para la Web,php y algo mas,Un poco de html Etiquetas :

Tienes Slic 2.1 para activar Windows 7?

Escrita por UTAN, 31 julio 2010 (16) Comentarios

Después de entregarles una larga recopilación de Oem SLP serials para el Windows 7. Bueno ahora les traigo un programa llamado Everest que te dice si tu computadora tiene los codigos en la tabla ACPI necesarios para activar el Windows 7 en forma que los OEM lo hacen, para activar Windows 7 necesitas tener en el Bios de tu Computadora los bit necesarios para activar el Win 7,  el SLIC 2.1 que es la versión actual para el Win 7,  son codigo que van en la tabla ACPI del bios ya sea que su presencia en el bios es Originada por los programadores OEM como Dell, HP, Asus por decir algunos, o por el proceso de injeccion en la tabla ACPI del Bios, esta segunda forma es un proceso complicado pero que es posible de hacer y que tiene como resultado la activación de Win 7 offline, es decir que se activa en el momento que colocas el OEM serial para la versión de Windows 7 que vas a utilizar y que tu bios tenga el SLIC 2.1… Descarguense el Everest_Corporate_5.30.2009b_Portable.

  • Descompriman el Programa Everest , después corran el programa dándole al Everest.exe que se encuentra en el folder donde descomprimieron Everest…
  • Ven una ventana como la que muestro abajo en la foto: click en “Motherboard “.
  • Otra ventana se abre, clic en “ACPI”, ver la foto…
  • Otra ventana se abre, es en esta donde ves la tabla  ACPI del Bios,  aquí veras la información Slic 2.1, si lo tiene veras algo parecido como la foto que ves..
  • Al dar clic en “SLIC: Software Licensing Description Table”, se abre la información completa, si no tienes opción que nombre anteriormente.. Quiere decir que la  tabla ACPI no tiene los bits necesarios, para activar Win 7, si la ves al dar clic veras que versión tienes y el Nombre del OEM.
  • Si observas en la foto anterior en la parte donde dice “OEM ID” dice Dell y en “Slic Version” dice 2.1 .

Espero que esto te ayude, este es uno de los primeros pasos para activar y el mas importante, pues si no saves si lo tienes en la tabla ACPI del bios de tu Computadora el usar los Serials OEM, no te sera de ninguna utilidad… Si tienes el Slic 2.1 en tu BIOS entonces leete y usa los OEM serials..

Categorias : windows 7 Etiquetas :