RoterBaron
Stamm User
- Registriert
- 18. Mai 2011
- Beiträge
- 1.101
- Reaktionspunkte
- 452
- Punkte
- 83
Ich hab quasi eine gehirnblockade und bräuchte ein paar denkanstösse bzw hilfe bei einem Porjekt was ich gern der CS-Community bereitstellen wollen würde... wär also geil wenn mir hier jemand mit php kentnissen ein bischen helfen könnte 
Und zwar gibt es ja immer wieder von verschiedenen leuten aktualisierte CCcam.channelinfo und CCcm.provider dateien - allerdings habt ihr vielleicht auch schonmal festgestellt das der eine irgendwelche TABs einpflegt die aber garnicht korrekt dargestellt werden oder es gibt 100 doppeleinträge oder die datei ist absolut unsortiert wodurch doppeleinträge quasi unvermeidlich sind oder Provider sind falsch benannt etc...
Um dem entgegen zu wirken war nun meine Idee eine Zentrale anlaufstelle für alle du kreieren wo sich jeder die jeweils aktuelle datei nach seinen bedürfnisse generieren lassen könnte; dabei bin ich mir aber noch nicht ganz sicher ob ich das irendwo bei mir hosten werde/sollte oder sich diese Scripts jeder selber bei sich installieren kann etc... finde ich auch erstmal unwichtig - ersztmal muss es funtzen
Mein Problem ist nun das ich nicht genau weiss wie/was/wo eure anforderungen an sowas sein könnten und ich auch mit der Programmierung ein paar Probleme habe weil ich nicht soooo super fit in PHP bin, bastel mir nur abunzu mal was zum eigenbedarf also alles selber bei gebracht....
...ich bin auch schon ein bischen damit überfordern das genaue problem zu beschreiben hehe also bitte ich an dieser stelle um geduld bzw nachsicht
also meine bisherige idee war es, eine index.php zu haben wo ausgewählt werden kann ob man eine neue channelinfo und/oder providers eilesen und importieren will , oder ob man ggf vorhandene datensätze bearbeiten möchte...
beim import wird die channelinfo ausgelesen und nach CAID:IDENT:SID sortiert und dann dieser sortierung entsprechend in die datenbank eingetragen... somit wär das schonmal vorsortiert bzw beim späteren auslesen kann man das dann von mysql vorsortieren lassen (ORDER BY CAID,IDENT,SID)... oder hab ich hier bereits einen denkfehler?
zusätzlich sollte dann auch die CCcam.providers eingelesen werden - wobei ich da zb auch erst dachte das man sich beim exportieren, also späteren erstellen der datensätze in eine neue channelinfo datei, das fdurch die providers unterteilen lassen könnte, die man dann ja anhand CAID und IDENT identifiziert -- also zb dachte ich mir das der User dann zb alle provider auswählen kann oder nur ganz bestimmte und sich dann zb nur für SKY und KD eine channelinfo datei erstellen lassen könne weil derjenige eh keine sat karten hat etc...
tja, wo fang ich nun an....
erstmal die idee wie ich sie mir notiert habe:
global.php:
index.php:
der code zum importieren der channelinfo:
import_chaninfo.php
der code zum importieren der providers:
import_providers.php
das bearbeiten der channelinfo:
edit_chaninfo.php:
config.php:
sql/config.php:
sql/functions.php:
sql/db_mysql.php:
zum erstellen der mysql datenbank:
...ich hoffe hier ist keiner so dreist und klaut meinen code um ihn später als seinen eigenen auszugeben! (is leider schon vorgekommen!)...
//EDIT: anhand dieser daten könnte man sich dann auch eine oscam.srvid erstellen lassen

Und zwar gibt es ja immer wieder von verschiedenen leuten aktualisierte CCcam.channelinfo und CCcm.provider dateien - allerdings habt ihr vielleicht auch schonmal festgestellt das der eine irgendwelche TABs einpflegt die aber garnicht korrekt dargestellt werden oder es gibt 100 doppeleinträge oder die datei ist absolut unsortiert wodurch doppeleinträge quasi unvermeidlich sind oder Provider sind falsch benannt etc...
Um dem entgegen zu wirken war nun meine Idee eine Zentrale anlaufstelle für alle du kreieren wo sich jeder die jeweils aktuelle datei nach seinen bedürfnisse generieren lassen könnte; dabei bin ich mir aber noch nicht ganz sicher ob ich das irendwo bei mir hosten werde/sollte oder sich diese Scripts jeder selber bei sich installieren kann etc... finde ich auch erstmal unwichtig - ersztmal muss es funtzen

Mein Problem ist nun das ich nicht genau weiss wie/was/wo eure anforderungen an sowas sein könnten und ich auch mit der Programmierung ein paar Probleme habe weil ich nicht soooo super fit in PHP bin, bastel mir nur abunzu mal was zum eigenbedarf also alles selber bei gebracht....
...ich bin auch schon ein bischen damit überfordern das genaue problem zu beschreiben hehe also bitte ich an dieser stelle um geduld bzw nachsicht

also meine bisherige idee war es, eine index.php zu haben wo ausgewählt werden kann ob man eine neue channelinfo und/oder providers eilesen und importieren will , oder ob man ggf vorhandene datensätze bearbeiten möchte...
beim import wird die channelinfo ausgelesen und nach CAID:IDENT:SID sortiert und dann dieser sortierung entsprechend in die datenbank eingetragen... somit wär das schonmal vorsortiert bzw beim späteren auslesen kann man das dann von mysql vorsortieren lassen (ORDER BY CAID,IDENT,SID)... oder hab ich hier bereits einen denkfehler?
zusätzlich sollte dann auch die CCcam.providers eingelesen werden - wobei ich da zb auch erst dachte das man sich beim exportieren, also späteren erstellen der datensätze in eine neue channelinfo datei, das fdurch die providers unterteilen lassen könnte, die man dann ja anhand CAID und IDENT identifiziert -- also zb dachte ich mir das der User dann zb alle provider auswählen kann oder nur ganz bestimmte und sich dann zb nur für SKY und KD eine channelinfo datei erstellen lassen könne weil derjenige eh keine sat karten hat etc...
tja, wo fang ich nun an....
erstmal die idee wie ich sie mir notiert habe:
Code:
# tabelle channelinfo mit: id, CAID, IDENT, SID, ChanText, update=0, delete=0, validated=0
# tabelle channelinfoupdates mit: chaninfoid, userid, comment="", updated(unixdate)
# tabelle channelinfousers mit: id, username, access(user/mod/admin), added(unixdate)
# tabelle providers mit: id, CAID, IDENT, Provider, unixdate
# providers format: ersten 4 zahlen = CAID ... naechsten 4 zahlen = die letzten 4 stellen der IDENT ... providername
#
# frontend was die channelinfo anzeigt und wenn ein user was ändern will,
# wird updated=1 gesetzt (und ggf. delete=1 wenns geloescht werden soll) sowie ggf ein comment eingetragen...
# erst wenn mindestens 2 user (oder 1 admin/mod=valid=2) die aenderung bestaetigen wird validated=1 gesetzt und
# alle 5min prueft das ein anderes script und aktuallisiert dann erst die echte channelinfo...
#
# ...gesammte channelinfo anzeigen oder nur die, die update=1 und valid=0 oder 1 haben
# ...allg. geaenderte chans koennen ggf an einem eintrag in der tabelle chaninfoupdates erkannt und angezeigt werden
global.php:
PHP:
<?php
//error_reporting(E_ERROR);
error_reporting(E_ALL);
ini_set('display_errors','On');
ini_set("max_execution_time", "300");
ini_set("session.gc_maxlifetime", "3600");
ini_set("memory_limit","128M");
//ini_set("arg_separator.output","&");
//ini_set("url_rewriter.tags","a=href,area=href,frame=src,input=src,link=href,form=action,fieldset=");
//ini_set("session.use_cookies", 1);
//ini_set("session.use_only_cookies", 0);
//ini_set("session.use_trans_sid", 1);
//ob_implicit_flush(true);
////// defaults
//
$DEBUG=0;
$PAGETiTLE="ChanInfo Manager";
$SPACER = " ";
$SPACER2=" <font color='#800000'><td class='trenn'>•</td></font> \n";
$SPACER3='<td><img src="images/pixelspace.gif" width="10" height="1" border="0" alt=""></td>';
require("config.php");
if (isset($db_servername)){
$DB_con=new DB_Sql;
$DB_con->database=$db_name;
$DB_con->server=$db_servername;
$DB_con->user=$db_username;
$DB_con->password=$db_password;
$DB_con->connect();
$db_password="";
$DB_con->password="";
} else { echo "ERROR"; }
// ###################### some vars... #######################
$SHOW_MEMORY_USAGE = true;
$SHOW_DURATION_TIME = true;
if (!isset($ScriptVersion)) { $ScriptVersion = "0.01"; }
$copysign = '© 2011 (v'.$ScriptVersion.')';
$GETstart = array();
#$dbcon = mysql_connect($dbhost,$dbuser,$dbpass) or die(mysql_error());
#mysql_select_db("$db",$dbcon);
$curdatetime = date("d.m.Y H:i:s");
// default headers
@header("HTTP/1.0 200 OK");
@header("HTTP/1.1 200 OK");
@header("Content-type: text/html");
$header ="<html><head>\n";
//header("Location: /index.php?". session_name() . "=" . session_id());
$header.="<link rel=\"stylesheet\" href=\"style.css\" type=\"text/css\">\n";
$header.="<title>".$PAGETiTLE."</title>\n";
$header.="<meta http-equiv=\"Content-Type\"\n";
$header.="content=\"text/html; charset=iso-8859-1\">\n";
$header.="<meta name=\"robots\" content=\"disallow\">\n";
$header.="</head>\n";
$BODY ="<body>\n";
#$JAVA ="<script type=\"text/javascript\" src=\"wz_tooltip.js\"></script>\n";
#$JAVA.="<script type=\"text/javascript\" src=\"popup.js\"></script>\n";
$JAVA="";
$MENUEhtml ="<td id=\"top\"><!--menü-->\n";
$MENUEhtml.="<table align=\"center\" id=\"menu2\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
$MENUEhtml.=" <tr>\n";
$MENUEhtml.=" <td ><a href=\"./\">Home</a></td>$SPACER3<td class=\"trenn\">•</td>$SPACER3\n";
$MENUEhtml.=" <td ><a href=\"./import_chaninfo.php\">Import CCcam.channelinfo</a></td>$SPACER3<td class=\"trenn\">•</td>$SPACER3\n";
$MENUEhtml.=" <td ><a href=\"./import_providers.php\">Import CCcam.providers</a></td>$SPACER3<td class=\"trenn\">•</td>$SPACER3\n";
$MENUEhtml.=" <td ><a href=\"./edit_chaninfo.php\">Edit Channelinfo</a></td>$SPACER3<td class=\"trenn\">•</td>$SPACER3\n";
$MENUEhtml.=" <td ><a href=\"./edit_providers.php\">Edit Providers</a></td>\n";
$MENUEhtml.=" </tr>\n";
$MENUEhtml.="</table>\n";
$MENUEhtml.="<!--menü ende--></td>\n";
$MENUEhtml.="<br/><p/>\n";
#$footer = "<br/><br/> <p>$curdatetime</p><br/>\n";
$footer="<div style=\"position:absolute; bottom:0px; right:0px;\"> ".$copysign." </div>\n";
$LOGO="";
$DeleteIcon="images/b_drop.png";
$DELETEimg='<img src="'.$DeleteIcon.'" width="10" height="10" border="0" alt="Delete">';
$EditIcon="images/b_edit.png";
$EDITimg='<img src="'.$EditIcon.'" width="10" height="10" border="0" alt="Edit">';
// ###################### Start functions #######################
require('sql/functions.php');
?>
index.php:
PHP:
<?php
ob_implicit_flush(true);
#session_start();
$ScriptVersion = "0.02";
require("global.php");
$_SELF=$_SERVER['PHP_SELF'];
$DEBUG = 0;
$html ="<?php flush(); ?>\n";
//$BODY ="<body onLoad=\"focus();addscoreform.score.focus()\">\n";
$BODY ="<body>\n";
#$JAVA ="<script type=\"text/javascript\" src=\"wz_tooltip.js\"></script>\n";
#$JAVA.="<script type=\"text/javascript\" src=\"popup.js\"></script>\n";
$JAVA="";
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<?php echo $header; ?>
<?php echo $BODY; ?>
<?php echo $JAVA; ?>
<?php echo $LOGO; ?>
<?php echo $MENUEhtml; ?>
<?php
/*
logincheck();
$uid = $_SESSION['uid'];
$pwd = $_SESSION['pwd'];
//Benutzerdaten abrufen
$result = $DB_con->query("SELECT * FROM players WHERE id=$uid");
$portal_user = mysql_fetch_assoc($result);
*/
if (isset($_GET['debug']) && $_GET['debug'] == 1) { $DEBUG = 1; }
if (isset($DEBUG) and $DEBUG == 1) {
$base_memory_usage = 0;
if (function_exists('memory_get_usage')) { $base_memory_usage = memory_get_usage(); }
if ($base_memory_usage != 0) { echo "<br/>Memory Usage: $base_memory_usage byte<br/>\n"; }
showarray($_GET);
showarray($_POST);
showarray($_SESSION);
}
function spezialcharacters($text){
//$text=wordwrap($text,100," ",1);
//$text=str_replace(",", "", $text);
$text=str_replace(";", "", $text);
$text=htmlspecialchars("$text");
$text=str_replace("#", "", $text);
$text=str_replace("|", "", $text);
$text=str_replace("'", "´", $text);
//$text=str_replace("'", "\'", $text);
$text=eregi_replace("( ){2,}", " ", $text);
$text=trim($text);
return($text);
}
?>
<br/>
<?php echo $footer; ?>
</body>
</html>
der code zum importieren der channelinfo:
import_chaninfo.php
PHP:
<?php
require("global.php");
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">';
echo $header;
echo $BODY;
echo $JAVA;
echo $LOGO;
echo $MENUEhtml;
$curdatetime = date("d.m.Y H:i:s");
echo "$curdatetime<br/><br/>";
$ADDED=$SKIPPED=0;
function InsertLines($File) {
global $SPACER3;
$handle = fopen("$File", "r");
$Lines = fread($handle, filesize($File));
fclose($handle);
$i=-1;
$output = explode("\n", $Lines);
foreach($output as $line) {
if ($line == "") { continue; }
$tmp = explode("\"", $line);
$CIS = explode(":", $tmp[0]);
$CAID = $CIS[0];
if (preg_match('/^[0-9]+/', $CAID)) {
$i++;
#array fuer die sortierung
$CIS_Array["$i"] = $tmp[0];
$CHANTEXT["$tmp[0]"] = $tmp[1];
}
}
unset($CIS);
sort($CIS_Array);
foreach($CIS_Array as $idx => $CIS) {
$CIS2 = explode(":", $CIS);
$CAID = $CIS2[0];
$IDENT = $CIS2[1];
$SID = $CIS2[2];
$CT = CharFilter("$CHANTEXT[$CIS]");
$CT = preg_replace("/ +/", " ", $CT);;
//echo "<b>$CAID:$IDENT:$SID</b> $SPACER3 $SPACER3 ---> $SPACER3 $SPACER3 <b>$CT</b> </br>";
#mysql insert...
InsertChanInfo("$CAID","$IDENT","$SID","$CT");
}
echo "</br>Done!</br>";
}
function InsertChanInfo($CAID,$IDENT,$SID,$ChanText) {
global $DB_con, $table;
global $SPACER, $SPACER2, $SPACER3, $ADDED, $SKIPPED;
$ChanText = addslashes($ChanText);
#prüfen ob bereits vorhanden
$result = $DB_con->query("SELECT id FROM ".$table["ci"]." WHERE CAID=\"$CAID\" AND IDENT=\"$IDENT\" AND SID=\"$SID\"");
$RES = $DB_con->fetch_array($result);
if (!empty($RES)) {
$OK = 0;
$SKIPPED++;
#echo "---- ALREADY ADDED ---- <b>$CAID:$IDENT:$SID</b> $SPACER $SPACER --> $SPACER $SPACER <b>$ChanText</b> </br>";
} else {
$OK = 1;
}
#einfuegen fals noch nicht vorhanden
if ($OK) {
$ADDED++;
$sql = "INSERT INTO ".$table["ci"]." SET CAID='$CAID', IDENT='$IDENT', SID='$SID', ChanText='$ChanText'";
//$sql2= "INSERT INTO ".$table["ciu"]." SET chaninfoid='$id', user='$USERNAME', comment='$COMMENT'";
$insert = $DB_con->query($sql);
}
}
echo "InsertLines: $ChanInfoFile</br>";
InsertLines($ChanInfoFile);
echo "</br>Added: $ADDED";
echo "</br>Skipped: $SKIPPED</br>";
?>
<?php echo $footer; ?>
</body>
</html>
der code zum importieren der providers:
import_providers.php
PHP:
<?php
require("global.php");
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">';
echo $header;
echo $BODY;
echo $JAVA;
echo $LOGO;
echo $MENUEhtml;
$curdatetime = date("d.m.Y H:i:s");
echo "$curdatetime<br/><br/>";
$ADDED=$SKIPPED=0;
function InsertProviderLines($File) {
global $SPACER3;
$handle = fopen("$File", "r");
$Lines = fread($handle, filesize($File));
fclose($handle);
$i=-1;
$output = explode("\n", $Lines);
foreach($output as $line) {
if ($line == "") { continue; }
$tmp = explode("\"", $line);
if (preg_match('/^[0-9]+/', $tmp[0])) {
$i++;
#array fuer die sortierung
$CI_Array["$i"] = $tmp[0];
$PROV["$tmp[0]"] = $tmp[1];
}
}
unset($CI);
sort($CI_Array);
foreach($CI_Array as $idx => $CI) {
$CAID = substr("$CI", 0, -5);
$IDENT = substr("$CI", -5);
$PT = CharFilter("$PROV[$CI]");
$PT = preg_replace("/ +/", " ", $PT);
#echo "<b>$CAID:$IDENT</b> $SPACER3 $SPACER3 ---> $SPACER3 $SPACER3 <b>$PT</b> </br>";
#mysql insert...
InsertProvInfo("$CAID","$IDENT","$PT");
}
echo "</br>Done!</br>";
}
function InsertProvInfo($CAID,$IDENT,$ProvText) {
global $DB_con, $table;
global $SPACER, $SPACER2, $SPACER3, $ADDED, $SKIPPED;
$ProvText = addslashes($ProvText);
#prüfen ob bereits vorhanden
$result = $DB_con->query("SELECT id FROM ".$table["cp"]." WHERE CAID='$CAID' AND IDENT='$IDENT'");
$RES = $DB_con->fetch_array($result);
if (!empty($RES)) {
$OK = 0;
$SKIPPED++;
#echo "---- ALREADY ADDED ---- <b>$CAID:$IDENT</b> $SPACER $SPACER --> $SPACER $SPACER <b>$ProvText</b> </br>";
} else {
$OK = 1;
#echo "<b>$CAID:$IDENT</b> $SPACER3 $SPACER3 ---> $SPACER3 $SPACER3 <b>$ProvText</b> </br>";
}
#einfuegen fals noch nicht vorhanden
if ($OK) {
$ADDED++;
$sql = "INSERT INTO ".$table["cp"]." VALUES (NULL, '$CAID', '$IDENT', '$ProvText', NULL)";
//$sql2= "INSERT INTO ".$table["ciu"]." SET chaninfoid='$id', user='$USERNAME', comment='$COMMENT'";
$insert = $DB_con->query($sql);
}
}
echo "InsertProviderLines: $ProvidersFile</br>";
InsertProviderLines($ProvidersFile);
echo "</br>Added: $ADDED";
echo "</br>Skipped: $SKIPPED</br>";
?>
<?php echo $footer; ?>
</body>
</html>
das bearbeiten der channelinfo:
edit_chaninfo.php:
PHP:
<?php
ob_implicit_flush(true);
#session_start();
$ScriptVersion = "0.02";
require("global.php");
$_SELF=$_SERVER['PHP_SELF'];
$DEBUG = 0;
$html ="<?php flush(); ?>\n";
//$BODY ="<body onLoad=\"focus();addscoreform.score.focus()\">\n";
$newCAID = isset($_POST["newCAID"]) ? $_POST["newCAID"] : "";
$newIDENT = isset($_POST["newIDENT"]) ? $_POST["newIDENT"] : "";
$newSID = isset($_POST["newSID"]) ? $_POST["newSID"] : "";
$newChantext = isset($_POST["newChantext"]) ? $_POST["newChantext"] : "";
$EditIT = isset($_GET["EditIT"]) ? $_GET["EditIT"] : "";
$DeleteIT = isset($_GET["DeleteIT"]) ? $_GET["DeleteIT"] : "";
$DEBUG = 0;
$th0='align="center" valign="middle"';
$td0='align="center" valign="middle"';
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<?php echo $header; ?>
<?php echo $BODY; ?>
<?php echo $JAVA; ?>
<?php echo $LOGO; ?>
<?php echo $MENUEhtml; ?>
<?php
if (isset($EditIT) AND !empty($EditIT)) {
}
if (isset($DeleteIT) AND !empty($DeleteIT)) {
//$delete = $DB_con->query("DELETE ".$table["ci"]." WHERE id=$DeleteIT");
$update = $DB_con->query("UPDATE ".$table["ci"]." SET deleted = 1 WHERE id = $DeleteIT");
echo "<b>DELETED !<b/>";
exit;
}
function GetChanInfoLines_db() {
global $DB_con, $table;
global $COUNT, $_SELF, $SPACER, $SPACER3, $DeleteIcon, $EditIcon;
$th0='align="center" valign="middle"';
$td0='align="center" valign="middle"';
$select = "id,CAID,IDENT,SID,ChanText,updated,deleted,validated";
$result = $DB_con->query("SELECT $select FROM ".$table["ci"]." WHERE deleted = 0 ORDER BY CAID,IDENT,SID");
while ($row = $DB_con->fetch_array($result)) {
$id = $row["id"];
$CAID = $row["CAID"];
$IDENT = $row["IDENT"];
$SID = $row["SID"];
$CT = $row["ChanText"];
$COUNT++;
$DeleteHtml='<a href="'.$_SELF.'?DeleteIT='.$id.'" title="Delete"><img src="'.$DeleteIcon.'" width="10" height="10" border="0"></a>';
$EditHtml='<a href="'.$_SELF.'?EditIT='.$id.'" title="Edit"><img src="'.$EditIcon.'" width="10" height="10" border="0"></a>';
echo "<tr>\n";
echo '<td '.$td0.'><input name="CAID" type="text" value="'.$CAID.'" size="4" maxlength="4"> </td>';
echo '<td '.$td0.'><input name="IDENT" type="text" value="'.$IDENT.'" size="6" maxlength="6"> </td>';
echo '<td '.$td0.'><input name="SID" type="text" value="'.$SID.'" size="4" maxlength="4"> </td>';
echo '<td> <b><input name="Chantext" type="text" value="'.$CT.'" size="50"></b> </td>';
echo "<td> $DeleteHtml </td>";
echo "<td> $EditHtml </td>\n";
echo "</tr>\n";
}
}
echo '<form method="POST">';
echo '
<table border="1" cellpadding="5" cellspacing="0">
<tr>
<th '.$th0.'> CAID </th><th '.$th0.'> IDENT </th><th '.$th0.'> SID </th><th '.$th0.'> ChanText </th><th '.$th0.'></th><th '.$th0.'></th>
</tr>
';
GetChanInfoLines_db();
echo "</table>";
echo "<p>Lines: <b>$COUNT</b></p>\n";
echo '<br/><p>
<p><b>Add new Channel:</b></p>
CAID: <input name="newCAID" type="text" value="" size="4" maxlength="4">
'.$SPACER.' '.$SPACER.'
IDENT: <input name="newIDENT" type="text" value="" size="6" maxlength="6">
'.$SPACER.' '.$SPACER.'
SID: <input name="newSID" type="text" value="" size="4" maxlength="4">
'.$SPACER.' '.$SPACER.'
Chantext: <input name="newChantext" type="text" value="" size="50">
</p>
<p><input type="submit" value=" Absenden ">
<input name="reset" type="reset" id="reset" value=" Zurücksetzen "></p>
</form>
';
?>
<?php echo $footer; ?>
</body>
</html>
config.php:
PHP:
<?php
require('sql/config.php');
require("sql/db_mysql.php");
### config - start
$ChanInfoFile = "./CCcam.channelinfo";
$ProvidersFile = "./CCcam.providers";
$table["ci"] = 'channelinfo';
$table["cp"] = 'providers';
$table["ciu"] = 'channelinfoupdates';
$table["ca"] = 'channelinfousers';
### config - end
if (!file_exists("$ChanInfoFile")) { die("ERROR: File doesnt exist: $ChanInfoFile</br>"); }
?>
sql/config.php:
PHP:
<?php
// type of database running (atm only mysql supported!)
$dbservertype='mysql';
// dbase ident
$db_servername = "127.0.0.1";
$db_username = "root";
$db_password = "";
$db_name = "cccam";
// salted hash prefix for user-pwd's...
$SALTED = "fwzhf8fh289fh";
// technical email address - any error messages will be emailed here
$technicalemail="email@gmail.com";
// use persistant connections to the database
// 0 = don't use
// 1 = use
$usepconnect=0;
?>
PHP:
<?php
function CharFilter($string) {
$chars = array('ä'=>'ae','ü'=>'ue','ö'=>'oe','ß'=>'ss');
$newstring = strtr($string,$chars);
return $newstring;
}
/**
* showarray()
*
* Dump all contents of an array in HTML (kinda)
*
* @param array
*
*/
function showarray($array) {
echo "<pre>\n";
var_dump($array);
echo "</pre>\n";
}
function mksalt($pwlength) {
srand((double)microtime()*1000000);
$Zeichen = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$pawd = "";
while (strlen($pawd) < $pwlength) {
$pawd .= substr($Zeichen,(rand()%(strlen($Zeichen))),1);
}
return $pawd;
}
function crypt_pw($plainpw) {
$salt = mksalt(8);
if ((CRYPT_MD5)) // CRYPT_MD5 = php_global_const
{
$salt = "\$1\$$salt\$"; } else { $salt = substr($salt,0,2); }
return crypt($plainpw, $salt);
}
?>
sql/db_mysql.php:
PHP:
<?php
class DB_Sql {
var $database = "";
var $link_id = 0;
var $query_id = 0;
var $record = array();
var $errdesc = "";
var $errno = 0;
var $reporterror = 1;
var $server = "localhost";
var $user = "root";
var $password = "";
var $appname = "CIUM";
var $appshortname = "CIUM (CCcamInfo Update Manager)";
var $error_sent = FALSE;
var $must_be_connected = TRUE;
function connect($must_be_connex = TRUE) {
global $usepconnect;
// connect to db server
if(!$must_be_connex){$this->must_be_connected = FALSE;}
if ( 0 == $this->link_id ) {
if ($this->password=="") {
if ($usepconnect==1) {
$this->link_id=mysql_pconnect($this->server,$this->user);
} else {
$this->link_id=mysql_connect($this->server,$this->user);
}
} else {
if ($usepconnect==1) {
$this->link_id=mysql_pconnect($this->server,$this->user,$this->password);
} else {
$this->link_id=mysql_connect($this->server,$this->user,$this->password);
}
}
if (!$this->link_id) {
$this->halt("Link-ID == false, connect failed");
}
if ($this->database!="") {
if(!mysql_select_db($this->database, $this->link_id)) {
$this->halt("cannot use database ".$this->database);
}
}
}
}
function select_db($database="") {
// select database
if ($database!="") {
$this->database=$database;
}
// echo "Select $this->database<br>";
if(!mysql_select_db($this->database, $this->link_id)) {
$this->halt("cannot use database ".$this->database);
}
}
function query($query_string) {
global $query_count,$showqueries,$explain,$querytime;
// do query
if ($showqueries) {
echo "Query: $query_string\n";
global $pagestarttime;
$pageendtime=microtime();
$starttime=explode(" ",$pagestarttime);
$endtime=explode(" ",$pageendtime);
# $beforetime=$endtime[0]-$starttime[0]+$endtime[1]-$starttime[1];
#echo "Time before: $beforetime\n";
}
$this->query_id = mysql_query($query_string,$this->link_id);
if (!$this->query_id) {
$this->halt("Invalid SQL: ".$query_string);
}
$query_count++;
if ($showqueries) {
$pageendtime=microtime();
$starttime=explode(" ",$pagestarttime);
$endtime=explode(" ",$pageendtime);
#$aftertime=$endtime[0]-$starttime[0]+$endtime[1]-$starttime[1];
#$querytime+=$aftertime-$beforetime;
#echo "Time after: $aftertime\n";
if ($explain and substr(trim(strtoupper($query_string)),0,6)=="SELECT") {
$explain_id = mysql_query("EXPLAIN $query_string",$this->link_id);
echo "</pre>\n";
echo "
<table width=100% border=1 cellpadding=2 cellspacing=1>
<tr>
<td><b>table</b></td>
<td><b>type</b></td>
<td><b>possible_keys</b></td>
<td><b>key</b></td>
<td><b>key_len</b></td>
<td><b>ref</b></td>
<td><b>rows</b></td>
<td><b>Extra</b></td>
</tr>\n";
while($array=mysql_fetch_array($explain_id)) {
echo "
<tr>
<td>$array[table] </td>
<td>$array[type] </td>
<td>$array[possible_keys] </td>
<td>$array[key] </td>
<td>$array[key_len] </td>
<td>$array[ref] </td>
<td>$array[rows] </td>
<td>$array[Extra] </td>
</tr>\n";
}
echo "</table>\n<BR><hr>\n";
echo "\n<pre>";
} else {
echo "\n<hr>\n\n";
}
}
return $this->query_id;
}
function fetch_array($query_id=-1,$query_string="") {
// retrieve row
if ($query_id!=-1) {
$this->query_id=$query_id;
}
if ( isset($this->query_id) ) {
$this->record = mysql_fetch_array($this->query_id);
} else {
if ( !empty($query_string) ) {
$this->halt("Invalid query id (".$this->query_id.") on this query: $query_string");
} else {
$this->halt("Invalid query id ".$this->query_id." specified");
}
}
return $this->record;
}
function halt($msg) {
$this->errdesc=mysql_error();
$this->errno=mysql_errno();
// prints warning message when there is an error
global $technicalemail;
if ($this->reporterror==1) {
$this->error_sent = TRUE;
$message="Database error:<br> $msg<br>\n";
$message.="mysql error: $this->errdesc\n<br>";
$message.="mysql error number: $this->errno\n<br>";
$message.="Date: ".date("l dS of F Y h:i:s A")."\n<br>";
$message.="Script: ".getenv("REQUEST_URI")."\n<br>";
$message.="Referer: ".getenv("HTTP_REFERER")."\n<br>";
echo "<br>$message<br>";
echo "\n<!-- $message -->\n";
echo "</td></tr></table>\n<p>There seems to have been a slight problem with the database.\n";
echo "Please try again by pressing the refresh button in your browser.</p>";
echo "An E-Mail has been dispatched to our <a href=\"mailto:$technicalemail\">Technical Staff</a>, who you can also contact if the problem persists.</p>";
echo "<p>We apologise for any inconvenience.</p>";
if($this->must_be_connected){
$message = "Requiered DB_Connection is not available or occured errors !<br>$this->appshortname will be stopped now !<br>".$message;
@mail ($technicalemail,"$this->appshortname Database error!",$message);
die("");
}else{
if(!$this->error_sent){
$this->error_sent = TRUE;
$message = "NOT Requiered DB_Connection is not available or occured errors !<br>$this->appshortname will try to work again !<br>This mail was sent as the first error occured only. ".$message;
@mail ($technicalemail,"$this->appshortname Database error!",$message);
return $this->link_id = FALSE;
}
}
}
}
}
?>
zum erstellen der mysql datenbank:
Code:
--
-- Tabellenstruktur für Tabelle `channelinfo`
--
CREATE TABLE IF NOT EXISTS `channelinfo` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`CAID` varchar(4) NOT NULL,
`IDENT` varchar(6) NOT NULL,
`SID` varchar(4) NOT NULL,
`ChanText` text NOT NULL,
`updated` int(1) NOT NULL DEFAULT '0',
`deleted` int(1) NOT NULL DEFAULT '0',
`validated` int(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `channelinfoupdates`
--
CREATE TABLE IF NOT EXISTS `channelinfoupdates` (
`chaninfoid` int(11) NOT NULL,
`userid` int(11) NOT NULL,
`comment` text NOT NULL,
`updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `channelinfousers`
--
CREATE TABLE IF NOT EXISTS `channelinfousers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` text NOT NULL,
`password` varchar(255) NOT NULL,
`access` varchar(10) NOT NULL DEFAULT 'user',
`added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `providers`
--
CREATE TABLE IF NOT EXISTS `providers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`CAID` varchar(4) COLLATE latin1_german1_ci NOT NULL,
`IDENT` varchar(4) COLLATE latin1_german1_ci NOT NULL,
`Provider` text CHARACTER SET latin1 NOT NULL,
`added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
...ich hoffe hier ist keiner so dreist und klaut meinen code um ihn später als seinen eigenen auszugeben! (is leider schon vorgekommen!)...
//EDIT: anhand dieser daten könnte man sich dann auch eine oscam.srvid erstellen lassen
Zuletzt bearbeitet: