Unicode support

Superlexx
User
Posts: 45
Joined: Thu Feb 10, 2005 8:51 pm

Unicode support

Post by Superlexx »

Hello,

is it possible for netjukebox to support multibyte strings (for file name and tags)? Is this a PHP issue?

Thank you

User avatar
wbartels
netjukebox developer
Posts: 823
Joined: Thu Nov 04, 2004 3:12 pm
Location: Netherlands
Contact:

Post by wbartels »

Not with netjukebox 3.65 :(
Many string functions have to be replaced with the multibyte equivalent.
For example strlen() has to be replaced with mb_strlen()
For more information, take a look here: http://nl2.php.net/mbstring

I don't know if MySQL is multibyte compatible, and if GET and POST work well with multibyte variables.

Any input regarding multibyte is very welcome :wink:

Superlexx
User
Posts: 45
Joined: Thu Feb 10, 2005 8:51 pm

Post by Superlexx »

MySQL does support unicode and phpMyAdmin too, but after looking into NJB code, the first problem that I encountered was readdir() that returns question marks instead of unicode characters while working well with characters >127 (like in "Björk").

Looks like we'll have to wait for PHP6 or something :cry:
I guess I'll take a look at ASP.NET to see how much it would take to port NJB to ASP.

User avatar
wbartels
netjukebox developer
Posts: 823
Joined: Thu Nov 04, 2004 3:12 pm
Location: Netherlands
Contact:

Post by wbartels »

It is a pity that readdir() doesn't work with multibyte strings :(
I hope that PHP will fix this before my first Russian or Chinese album :wink:

So far I hadn't any problem with exotic characters.
But they are all high byte strings and not multibyte strings:

Sigur rós: Viðrar vel til loftárása
Björk: Það sést ekki sætari mey
Buena vista social club: ¿Tú qué has hecho?

Superlexx
User
Posts: 45
Joined: Thu Feb 10, 2005 8:51 pm

Post by Superlexx »

well, for some reason, I even have problems with Björk since at some stage the name becomes "Bj" like other names containing high byte characters (some german and scandinavian band names and tracks). Maybe it's because the mbstring.dll PHP extension is installed or MySQL running in UTF-8 mode.

User avatar
wbartels
netjukebox developer
Posts: 823
Joined: Thu Nov 04, 2004 3:12 pm
Location: Netherlands
Contact:

Post by wbartels »

Superlexx wrote:well, for some reason, I even have problems with Björk since at some stage the name becomes "Bj" like other names containing high byte characters (some german and scandinavian band names and tracks). Maybe it's because the mbstring.dll PHP extension is installed or MySQL running in UTF-8 mode.
I don't have the problem that Björk becomes Bj (as far as I know)
Will you write down exactly what you type and click when Björk becomes Bj
Than I can see if I have the same problem.

Here is my setup:

PHP 4.10
Php.ini-dist as basis for the php.ini

MySQL 4.0.23
Installed mysqld-nt.exe as Windows service.
Here is my "MySQL" configuration file:

Code: Select all

# Example MySQL config file for medium systems.
#
# This is for a system with little memory (32M - 64M) where MySQL plays
# an important part, or systems up to 128M where MySQL is used together with
# other programs (such as a web server)
#
# You can copy this file to
# /etc/my.cnf to set global options,
# mysql-data-dir/my.cnf to set server-specific options (in this
# installation this directory is /usr/local/mysql/var) or
# ~/.my.cnf to set user-specific options.
#
# In this file, you can use all long options that a program supports.
# If you want to know which options a program supports, run the program
# with the "--help" option.

[client]
#password	= your_password
port		= 3306
#socket		= /tmp/mysql.sock



[mysqld]
port		= 3306
#socket		= /tmp/mysql.sock

skip-locking
skip-bdb
skip-innodb

key_buffer		= 16M
max_allowed_packet	= 1M
table_cache		= 64
sort_buffer_size	= 512K
net_buffer_length	= 8K
myisam_sort_buffer_size	= 8M
query_cache_size	= 16M



basedir = c:/mysql/
datadir = d:/mysql/


# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
# 
#skip-networking

# Replication Master Server (default)
# binary logging is required for replication
# log-bin

# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id	= 1



[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[isamchk]
key_buffer		= 20M
sort_buffer_size	= 20M
read_buffer		= 2M
write_buffer		= 2M

[myisamchk]
key_buffer		= 20M
sort_buffer_size	= 20M
read_buffer		= 2M
write_buffer		= 2M

[mysqlhotcopy]
interactive-timeout

Superlexx
User
Posts: 45
Joined: Thu Feb 10, 2005 8:51 pm

Post by Superlexx »

After I switched the MySQL charset to default (latin1_swedish_ci) and disabled mbstring.dll in php.ini, the >127 characters work as intended. Still I have some albums with cyrillic characters that don't work.

Btw. in menu.php, line 119 should be </tr> instead of <tr> ;). I have modified some of the PHP files so that the resulting .html files become W3C compilant and ran over this little thing. (the HTML code isn't rendered correctly by IE6 after the beautification, who wonders :roll:).

User avatar
wbartels
netjukebox developer
Posts: 823
Joined: Thu Nov 04, 2004 3:12 pm
Location: Netherlands
Contact:

Post by wbartels »

Superlexx wrote:After I switched the MySQL charset to default (latin1_swedish_ci) and disabled mbstring.dll in php.ini, the >127 characters work as intended. Still I have some albums with cyrillic characters that don't work.

Btw. in menu.php, line 119 should be </tr> instead of <tr> ;). I have modified some of the PHP files so that the resulting .html files become W3C compilant and ran over this little thing. (the HTML code isn't rendered correctly by IE6 after the beautification, who wonders :roll:).
Nice to hear, that most of your problems with strange characters are solved.

I have made many changes since the first open source release (30 December 2004).
I will take a little break now with coding.

If you have plans to make the code W3C compliant, I would appreciate this very much :D :D :D
Make sure you take the latest release (netjukebox 3.66) as basis.
Of course you will get full credit in the changelog.

Let me hear what you think of this.

Superlexx
User
Posts: 45
Joined: Thu Feb 10, 2005 8:51 pm

Post by Superlexx »

W3C compliancy isn't a big deal, just move the formatting to the CSS and turn ampersands ('&') in URLs to "&" (plus other minor stuff like removing the iframe from the table), but without unicode support it doesn't make much sence to me at this moment .

First I will check out Phalanger, a PHP compiler for .NET, to see if they offer unicode support (.NET uses UTF-16 internally, so there are chances; C# does support unicode). They claim that one doesn't need to change the PHP scripts to run them under .NET, but we'll see.

User avatar
wbartels
netjukebox developer
Posts: 823
Joined: Thu Nov 04, 2004 3:12 pm
Location: Netherlands
Contact:

Post by wbartels »

Superlexx wrote:W3C compliancy isn't a big deal, just move the formatting to the CSS and turn ampersands ('&') in URLs to "&" (plus other minor stuff like removing the iframe from the table), but without unicode support it doesn't make much sence to me at this moment .
What is a good site to learn more about W3C compliant HTML or XHTML?

Is this the best site to check if HTML is W3C compliant?
http://validator.w3.org/
Superlexx wrote:First I will check out Phalanger, a PHP compiler for .NET, to see if they offer unicode support (.NET uses UTF-16 internally, so there are chances; C# does support unicode). They claim that one doesn't need to change the PHP scripts to run them under .NET, but we'll see.
Please let me know if you make any progress with .NET, UTF-16 or related.

Superlexx
User
Posts: 45
Joined: Thu Feb 10, 2005 8:51 pm

Post by Superlexx »

wbartels wrote:Is this the best site to check if HTML is W3C compliant?
http://validator.w3.org/
yes, btw I am using Opera because checking the code is just as easy as pressing Alt+Ctrl+v, even if it's a local file (unlike FireFox, Opera uploads the data for validation and not just the URL).

To save you some time I post some of the beautified code here:

Code: Select all

<?php
//  +---------------------------------------------------------------------------+
//  | menu.php                                                                  |
//  +---------------------------------------------------------------------------+
header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1
header('Pragma: no-cache');// HTTP/1.0

require_once('include/globalize.inc.php');
$menu = get('menu') or $menu = 'browse';
$seperation = '|';

if ($menu == 'browse')
	{
	$shortcuts = '<a href="browse.php?command=view1&filter=symbol&artist=%23" target="main">&nbsp;# </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=a" target="main"> a </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=b" target="main"> b </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=c" target="main"> c </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=d" target="main"> d </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=e" target="main"> e </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=f" target="main"> f </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=g" target="main"> g </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=h" target="main"> h </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=i" target="main"> i </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=j" target="main"> j </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=k" target="main"> k </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=l" target="main"> l </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=m" target="main"> m </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=n" target="main"> n </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=o" target="main"> o </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=p" target="main"> p </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=q" target="main"> q </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=r" target="main"> r </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=s" target="main"> s </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=t" target="main"> t </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=u" target="main"> u </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=v" target="main"> v </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=w" target="main"> w </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=x" target="main"> x </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=y" target="main"> y </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&filter=start&artist=z" target="main"> z </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view1&artist=all&filter=all" target="main"> * </a>' . $seperation;
	$shortcuts .= '<a href="browse.php?command=view2&artist=Various&filter=exact&order=album" target="main"> &&nbsp;</a>';
	}

elseif ($menu == 'favorites')
	{
	$shortcuts = '<a href="favorites.php" target="main">&nbsp;favorites </a>' . $seperation;
	$shortcuts .= '<a href="favorites.php?command=ViewPopular" target="main"> popular </a>'. $seperation;
	$shortcuts .= '<a href="favorites.php?command=ViewNew" target="main"> new&nbsp;</a>';
	}

elseif ($menu == 'playlist')
	{
	$shortcuts = '<a href="httpq.php?command=prev" target="dummy">&nbsp;previous </a>' . $seperation;
	$shortcuts .= '<a href="httpq.php?command=play" target="dummy"> play </a>' . $seperation;
	$shortcuts .= '<a href="httpq.php?command=pause" target="dummy"> pause </a>' . $seperation;
	$shortcuts .= '<a href="httpq.php?command=stop" target="dummy"> stop </a>' . $seperation;
	$shortcuts .= '<a href="httpq.php?command=next" target="dummy"> next </a>' . $seperation;
	$shortcuts .= '<a href="index.php?menu=favorites&command=add" target="_top"> add playlist to favorites&nbsp;</a>';
	}

elseif ($menu == 'config')
	{
	$shortcuts = '<a href="config.php?command=HttpqConfiguration" target="main">&nbsp;httpQ configuration </a>' . $seperation;
	$shortcuts .= '<a href="users.php" target="main"> users </a>' . $seperation;
	$shortcuts .= '<a href="statistics.php" target="main"> statistics </a>' . $seperation;
	$shortcuts .= '<a href="update.php" target="main"> update&nbsp;</a>';	
	}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<title>netjukebox - the flexible media share</title>
	<link href="css/styles.css" rel="stylesheet" type="text/css">
	<meta name="robots" content="noindex, nofollow">
	<meta name="author" content="Willem Bartels">	
</head>

<!-- <body leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0"> -->
<body>
<table class="menu">
<tr>
	<td width="13"><img src="bitmap/menu_top_left.gif" alt="" width="13" height="33" border="0"></td>
	<td width="11"><img src="bitmap/menu_top.gif" alt="" width="11" height="33" border="0"></td>
	<td width="90"><a href="index.php?menu=browse" target="_top"><img src="bitmap/menu_browse_<?php if ($menu == 'browse') echo 'on'; else echo 'off'; ?>.gif" alt="" width="90" height="33" border="0"></a></td>
	<td width="90"><a href="index.php?menu=favorites" target="_top"><img src="bitmap/menu_favorites_<?php if ($menu == 'favorites') echo 'on'; else echo 'off'; ?>.gif" alt="" width="90" height="33" border="0"></a></td>
	<td width="90"><a href="index.php?menu=playlist" target="_top"><img src="bitmap/menu_playlist_<?php if ($menu == 'playlist') echo 'on'; else echo 'off'; ?>.gif" alt="" width="90" height="33" border="0"></a></td>
	<td width="90"><a href="index.php?menu=config" target="_top"><img src="bitmap/menu_config_<?php if ($menu == 'config') echo 'on'; else echo 'off'; ?>.gif" alt="" width="90" height="33" border="0"></a></td>
	<td width="100%"></td>
	<td width="156"><a href="http://www.netjukebox.nl/" target="_blank"><img src="bitmap/menu_netjukebox.gif" alt="" width="156" height="33" border="0"></a></td>
	<td width="2"><img src="bitmap/menu_top_right.gif" alt="" width="2" height="33" border="0"></td>
</tr>
<tr>
	<td width="13"><img src="bitmap/menu_middle_left.gif" alt="" width="13" height="21" border="0"></td>
	<td height="21" colspan="7"><?php echo $shortcuts; ?></td>
	<td width="2"><img src="bitmap/menu_middle_right.gif" alt="" width="2" height="21" border="0"></td>
</tr>
<tr>
	<td colspan="9"></td>
</tr>
</table>
</body>
</html>
this is what my CSS looks like:

Code: Select all

body {
	color: Black;
	text-decoration: none;
	background-color: #A4B3DF;
	font-family: Arial, Helvetica, sans-serif;
	font-size: 13px;
	scrollbar-base-color: #A4B3DF;
	scrollbar-arrow-color: #030350;
	margin: 0px;
	padding: 0px;
	border: 0px;
}

body#lowerFrame {
	padding: 1em 3em 1em 3em;
}

a:link, a:visited {
	color: Navy;
	text-decoration: none;
}


a:hover {
	color: #FF8000;
	text-decoration: underline;
}


.forms {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 13px;
}


/*  +-------------------------------------------------------------------------+
    | Table                                                                   |
    +-------------------------------------------------------------------------+ */
table.border {
	border: 1px solid #42559C;
}	


table.menu a:link		{color: White; text-decoration: none;}
table.menu a:visited	{color: White; text-decoration: none;}
table.menu a:hover	{color: #FFCF00; text-decoration: none;}
table.menu {
	font-family: Arial, Helvetica, sans-serif;
	background-color: #000063;
	color: White;
	font-size: 13px;
	letter-spacing: 1px;
	border-width: 0px;
	border-spacing: 0px;
	background-image: url(../bitmap/menu_back.gif);
	background-repeat: repeat-x;
	padding: 0px;
	margin: 0px;
}

table.menu tr { padding: 0px; margin: 0px; border: 0px;}
table.menu td { padding: 0px; margin: 0px; border: 0px;}

table.error a:link		{color: Red; text-decoration: underline;}
table.error a:visited	{color: Red; text-decoration: underline;}
table.error {
   border: 2px solid Red;
	background-color: #FFA4A4;
}


table.ok a:link		{color: #529600; text-decoration: underline;}
table.ok a:visited	{color: #529600; text-decoration: underline;}
table.ok {
   border: 2px solid #529600;
	background-color: #EFFFD6;
}

table.warning a:link		{color: #42559C; text-decoration: underline;}
table.warning a:visited	{color: #42559C; text-decoration: underline;}
table.warning {
   border: 2px solid #42559C;
	background-color: #99AADB;
}

tr {
	font-size: 13px;
}
	
tr.header a:link		{color: White;}
tr.header a:visited	{color: White;}
tr.header a:hover		{color: #FF8000; text-decoration: underline;}
tr.header {
	height: 21px;
	color: #CAD2EC;
	background-image: url(../bitmap/table_header.gif);
	background-repeat: repeat-x;
	font-weight: bold;
}


.odd {
	height: 21px;
	background-color: #EFF1FA;
}


.even {
	height: 21px;
	background-color: #FFFFFF;
}


.footer a:link		{color: White;}
.footer a:visited	{color: White;}
.footer a:hover	{color: #FF8000; text-decoration: underline;}
.footer {
	height: 21px;
	font-size: 11px;
	background-color: #7289CD;
	color: #CAD2EC;
}


tr.select {
	background-color: #9DFF9D;
}


.vertical_line{
	width: 1px;
	background-color: #42559C;
}

	
.line {
	height: 1px;
	background-color: #42559C;
}


td.textwidth {
	width: 100px;
}


td.textspace {
	width: 25px;
}


td.spacer {
	width: 8px;
}


/*  +-------------------------------------------------------------------------+
    | hr line                                                                 |
    +-------------------------------------------------------------------------+ */
hr.light {
	color: #7289CD;
	height: 2px;
}


hr.dark {
	color: #42559C;
	height: 2px;
}


hr.black {
	color: #030350;
	height: 2px;
}


/*  +-------------------------------------------------------------------------+
    | Font size                                                               |
    +-------------------------------------------------------------------------+ */
.xs {
	font-size: 9px;
}


.small {
	font-size: 11px;
}


.large {
	font-size: 16px;
   font-family: "Trebuchet MS",Verdana, Arial, Helvetica, sans-serif;
	font-weight: bold;
}


.xl {
	font-size: 18px;
   font-family: "Trebuchet MS",Verdana, Arial, Helvetica, sans-serif;
}


.xxl {
	font-size: 21px;
   font-family: "Trebuchet MS",Verdana, Arial, Helvetica, sans-serif;
}

and these are the browse.php?command=view1&genre_id=~ results (I have added an option to stream an artist to my code ;)):

Code: Select all

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
	<title>netjukebox - the flexible media share</title>
	<meta name="robots" content="noindex, nofollow">
	<meta name="author" content="Willem Bartels">
	<link rel="shortcut icon" href="bitmap/icon32.ico">
	<link href="css/styles.css" rel="stylesheet" type="text/css">
</head>

<body id="lowerFrame">
<script type="text/javascript">
	<!--
	var ol_bgcolor = "#030350";
	var ol_fgcolor = "#CAD2EC";
	var ol_delay = 0;
	var ol_width = 0;
	// -->
</script>
<script type="text/javascript" language="JavaScript" src="javascript/overlib.js"></script>
<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>
<iframe name="dummy" id="dummy" width="0" height="0"></iframe>
<!-- <table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0"> -->
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
	<td>
<!-- ---- end header ---- -->
<strong>
<a href="browse.php">Browse</a>
<img src="bitmap/small_arrow.gif" alt="" width="19" height="13" border="0" align="middle">General
</strong>
<br><br>
<table border="0" cellspacing="0" cellpadding="0" class="border">
<tr class="header">
	<td class="spacer"></td>
	<td></td><!-- optional stream -->
	<td>Artist</td>
	<td class="spacer"></td>
	<td align="right"><a href="browse.php?command=view2&mode=thumbnail&genre_id=~&order=artist"><img src="bitmap/small_thumbnail.gif" alt="" width="21" height="21" border="0"></a></td>	
	<td align="right"><a href="browse.php?command=view2&genre_id=~&order=artist"><img src="bitmap/small_expand.gif" alt="" width="21" height="21" border="0"></a></td>	
</tr>
<tr class="line"><td colspan="5"></td></tr>
<tr class="odd">
	<td></td>
	<td><a href="stream.php?command=playlist&artist=A%20Perfect%20Circle" onMouseOver="return overlib('Stream artist');" onMouseOut="return nd();"><img src="bitmap/small_stream.gif" alt="" width="21" height="21" border="0"></a></td>
	<td colspan="3"><a href="browse.php?command=view2&artist=A%20Perfect%20Circle&order=year">A Perfect Circle</a></td>
	<td></td>
</tr>
<tr class="even">
	<td></td>
	<td><a href="stream.php?command=playlist&artist=Original%20Soundtrack" onMouseOver="return overlib('Stream artist');" onMouseOut="return nd();"><img src="bitmap/small_stream.gif" alt="" width="21" height="21" border="0"></a></td>
	<td colspan="3"><a href="browse.php?command=view2&artist=Original%20Soundtrack&order=year">Original Soundtrack</a></td>
	<td></td>
</tr>
</table>
<!-- ---- begin footer ----- -->
	</td>	
</tr>
<tr valign="bottom">
	<td height="30" align="center"><font class="small">| <a href="index.php?menu=browse&authenticate=logout" target="_top">Logout: Lex</a> | <a href="about.php" target="main">netjukebox 3.65</a> | Script execution time: 227.9  ms |</font></td>	
</tr>
</table>
</body>
</html>

User avatar
wbartels
netjukebox developer
Posts: 823
Joined: Thu Nov 04, 2004 3:12 pm
Location: Netherlands
Contact:

Post by wbartels »

Thanks very much Superlexx.
Some example code makes it a lot clearer.
And will give me a good basis to start with.

I will take a brake, and start to make it W3C compliant over a few weeks.

Superlexx
User
Posts: 45
Joined: Thu Feb 10, 2005 8:51 pm

Post by Superlexx »

I've played around with Phalanger and yes, it supports unicode better than PHP (readdir is unicode-aware, so probably other functions), but its function set is quite limited, i.e. no 1:1 support for pack() (hmacsha1() alsways rerturns "00") and worst of all, no preg_match() which means that the id3 library is unusable.

But still it was worth a try...

EDIT: I've talked to Thomas from Phalanger and he said that regular expressions will be implemented in Beta2 which should arrive in about two weeks.

User avatar
wbartels
netjukebox developer
Posts: 823
Joined: Thu Nov 04, 2004 3:12 pm
Location: Netherlands
Contact:

Post by wbartels »

That looks promising.

If security is not your highest concern than you can replace hmacsha1(… , …) with sha1(… . …) in login.php, users.php and initialize.inc.php.
You also have to replace the hmacsha1 JavaScript in login.php

Pack is also used in users.php for triple des encryption.

User avatar
wbartels
netjukebox developer
Posts: 823
Joined: Thu Nov 04, 2004 3:12 pm
Location: Netherlands
Contact:

Post by wbartels »

Making netjukebox W3C compliant is making progress.
Also rendering netjukebox on the Opera browser is almost ready.

I have one problem with the frameset.
I can't find a CSS equivalent for border="0".
If I don't user border="0" than I get an unwanted line between the menu and the main frame.
Any suggestion?

Code: Select all

<frameset rows="56,*" border="0">
	<frame src="menu.php?menu=<?php echo $menu; ?>" name="menu" id="menu" frameborder="0" scrolling="No" noresize>
	<frame src="<?php echo $main_url; ?>" name="main" id="main" frameborder="0" scrolling="Auto" noresize>
	<noframes>
		<body>
		netjukebox - live @ <?php echo $_SERVER['HTTP_HOST'];?><br>
		<a href="http://www.netjukebox.nl/">netjukebox - the flexible media share</a>
		</body>
	</noframes>
</frameset>

Locked