|
|
Projekt StarWalker - Ein Neubeginn |
|
verfasst am 02.03.2020 in Programmierung: Projekt Starwalker |
|
Nachdem das Projekt nun sehr lange auf Eis gelegen hat (fehlende Zeit, Umzug, neue Arbeit, Kinder, etc.) wird es nun fortgeführt.
Es wird daher hier regelmäßig neue Informationen geben.
Aktuell wird das ganze Projekt von vorne aufgebaut (u.a. wegen php7) und die implementierten Sachen angepasst.
Das Projekt ist ein Hobbyprojekt und bleibt kostenlos und ohne Verpflichtung. Unterstützung ist immer willkommen, in welcher Form auf immer.
Sobald es die ersten neuen Bilder gibt, werde ich diese hier einstellen. |
|
|
|
sec_pass - sichere Passwörter |
|
verfasst am 22.12.2019 in Programmierung: php |
|
Wegen einiger Nachfrage habe ich mich dazu entschlossen, das Script als verwendbare Web-Version zu gestalten.
Diese ist zu finden unter: http://sec_pass.gdra.de
Viel Spaß damit! |
|
|
|
InfoPi - Statusübersicht für den Pi |
|
verfasst am 03.10.2019 in Programmierung: InfoPi |
|
InfoPi ist mein neues Projekt. Dieses verfolgt die Absicht, wichtigste Informationen (wie z.B. Temperatur, Auslastung, Speicher) über die Pi in einer Weboberfläche darzustellen. Ich selber besitze mehrere verschiedene Pi's (u.a. BananaPi M1, RaspberryPi 3B+, RaspberryPi 4) und diese haben auch verschiedene Aufgaben. Ich habe bisher kein geeignetes Programm gefunden, daher programmiere ich selber eines. Dieses werde ich auch kostenlos zur Verfügung stellen, sobald es die wichtigsten Grundfunktionen hat.
Aktuell ist es schon möglich, den freien Speicher aller angeschlossen Geräte anzuzeigen (wichtig für Dateiserver), dass sieht im Moment so aus:
Es entwickelt sich Stück für Stück. Mit dem Ziel der Version 0.10 (Auslastung, Speicher, nutzbare Oberfläche) werde ich das Programm hier zur Verfügung stellen. Weitere Informationen folgen. |
|
|
|
eigener Kurz-URL-Dienst |
|
verfasst am 24.09.2019 in Programmierung: php |
|
Was ist die Idee dahinter? Ganz einfach, man möchte sich sehr lange URL's einfach mal abkürzen. Im Idealfall kann man sich die Kurz-URL-Links so gestalten, dass man sich diese einfach merken kann.
Was braucht man dazu?
- eine Domain
- einen Server oder Hoster mit php
- ggf. eine MySQL-Datenbank
- ein wenig Zeit
Getestet ist das ganze mit php7.3, sollte auch mit php5.6 funktionieren.
Als erstes benötigt man eine Ansicht zum erstellen, nennen wir sie "url.html".
<html>
<head>
</head>
<body>
<table align="center">
<tr>
<td><input type="text" id="link" size="64"></td>
<td><input type="button" value="URL erstellen" onclick="url()"></td>
</tr>
<tr>
<td align="center" colspan="2"><br/><br/><u><b>URL:</u></b> <input type="text" id="url" onmouseover="select();" size="64" readonly></td>
</tr>
</table>
</body>
</html>
| |
Nun haben wir erstmal eine Ansicht, mit der man arbeiten kann. Oben schreibt man die komplette URL rein, unten soll dann der Kurzlink angezeigt werden.
Als nächste benötigen wir ein Javascript, welches die Anfrage weiter gibt und die Antwort erwartet.
<script>
function url()
{
var req = null;
try
{
req = new XMLHttpRequest();
}
catch (ms)
{
try
{
req = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (nonms)
{
try
{
req = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (failed)
{
req = null;
}
}
}
//"&" umformen, macht ein wenig Probleme beim übertragen
var amp = document.getElementById("link").value;
var anzahl = amp.split("&").length-1;
for (i=0;i<anzahl;i++)
{
amp = amp.replace("&","-Ampersand-");
}
req.open("GET","url.php?link="+amp,true);
req.onreadystatechange = function()
{
switch(req.readyState)
{
case 4:
if (req.status == 200)
{
//deine.url ersetzen
document.getElementById("url").value = "http://deine.url/?id="+req.responseText;
}
break;
default:
return false;
break;
}
}
req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
req.send(null);
}
</script>
| |
Jetzt ist das html erstmal fertig. Jetzt kommt das php, hier die "url.php", zum Einsatz. Ich habe mich für eine Variante mit MySQL-Datenbank im Hintergrund entschieden.
Die Datenbank besteht aus 3 Spalten: id, link, url
<?php
define("SQL_HOST","MySQL-Server");
define("SQL_USER","MySQL-Nutzer");
define("SQL_DATABASE","MySQL-Datenbank");
define("SQL_PASS","MySQL-Passwort");
function sql($abfrage)
{
return mysqli_query(mysqli_connect(SQL_HOST,SQL_USER,SQL_PASS,SQL_DATABASE),$abfrage);
}
function sql_assoc($abfrage)
{
return mysqli_fetch_assoc(sql($abfrage));
}
function sql_num($abfrage)
{
return mysqli_num_rows(sql($abfrage));
}
function sql_assign($abfrage,$wert)
{
$abfrage = sql_assoc($abfrage);
return $abfrage[$wert];
}
function zahl($var)
{
return preg_match("=^[0-9]+$=i",$var);
}
function sec_url($kb,$gb,$sz,$z,$u=0)
{
if (!zahl($kb) or !zahl($gb) or !zahl($sz) or !zahl($z) or !zahl($u))
{
return false;
}
else
{
$url = array();
$var["kb"] = array("a","b","c","d","e","f","g","h","i","j","k","l","m","n",
"o","p","q","r","s","t","u","v","w","x","y","z");
$var["gb"] = array("A","B","C","D","E","F","G","H","I","J","K","L","M","N",
"O","P","Q","R","S","T","U","V","W","X","Y","Z");
$var["sz"] = array("_","-");
$var["z"] = array("1","2","3","4","5","6","7","8","9","0");
for ($a=0;$a<$kb;$a++)
{
$url[] = $var["kb"][rand(0,count($var["kb"])-(($u==1) ? 1 : 4))];
}
for ($a=0;$a<$gb;$a++)
{
$url[] = $var["gb"][rand(0,count($var["gb"])-(($u==1) ? 1 : 4))];
}
for ($a=0;$a<$sz;$a++)
{
$url[] = $var["sz"][rand(0,count($var["sz"])-(($u==1) ? 1 : 2))];
}
for ($a=0;$a<$z;$a++)
{
$url[] = $var["z"][rand(0,count($var["z"])-1)];
}
$var = array();
shuffle($url);
for ($a=0;$a<count($url);$a++)
{
$url_ret .= $url[$a];
}
$url = array();
return $url_ret;
}
}
if (isset($_GET["link"]))
{
//3-fache Prüfung ob Kurzlink eventuell existiert, verschiedene Variablen
$_GET["link"] = str_replace("-Ampersand-","&",$_GET["link"]);
$sec_url = sec_url(3,3,1,1,1);
if (sql_num("SELECT * FROM `url` WHERE `url` = '".$sec_url."'") > 0)
{
$sec_url = sec_url(3,2,1,2,1);
if (sql_num("SELECT * FROM `url` WHERE `url` = '".$sec_url."'") > 0)
{
$sec_url = sec_url(2,2,1,3,1);
}
}
//Prüfung ob der selbe Link schon existiert um doppelte Einträge zu vermeiden wird der alte Kurzlink ausgelesen
$da = sql_assign("SELECT `url` FROM `url` WHERE MD5(`link`) = '".md5($_GET["link"])."'","url");
if ($da == "")
{
sql("INSERT INTO `url` (`link`,`url`) VALUES ('".mysql_real_escape_string($_GET["link"])."','".$sec_url."')");
$da = sql_assign("SELECT `url` FROM `url` WHERE MD5(`link`) = '".md5($_GET["link"])."'","url");
}
echo $da;
}
else
{
echo "Anweisung nicht verstanden.";
}
?>
| |
Damit wäre die Möglichkeit zur Erstellung von Kurz-URL-Links fertig. Jetzt muss man diese nur noch auslesen. Dafür brauchen wir eine "index.php" welche wir mit "?id=" ansprechen können.
<?php
define("SQL_HOST","MySQL-Server");
define("SQL_USER","MySQL-Nutzer");
define("SQL_DATABASE","MySQL-Datenbank");
define("SQL_PASS","MySQL-Passwort");
function sql($abfrage)
{
return mysqli_query(mysqli_connect(SQL_HOST,SQL_USER,SQL_PASS,SQL_DATABASE),$abfrage);
}
function sql_assoc($abfrage)
{
return mysqli_fetch_assoc(sql($abfrage));
}
function sql_assign($abfrage,$wert)
{
$abfrage = sql_assoc($abfrage);
return $abfrage[$wert];
}
if (isset($_GET["id"]))
{
$da = sql_assign("SELECT `link` FROM `url` WHERE MD5(`url`) = '".md5($_GET["id"])."'","link");
if ($da == "")
{
//Fehlerseite das Link nicht da ist
header("Location: http://deine.url/404");
}
else
{
header("Location: ".$da);
}
}
else
{
//Fehlerseite das keine Anfrage bzgl. Kurzlink angegeben wurde (?id= fehlt)
header("Location: http://deine.url/404");
}
?>
| |
Das wars im Prinzip schon. Funktioniert sehr gut, probiert es einfach mal aus.
Das Script zum downloaden: | | |
|
|
|
|
sichere Passwörter mit php |
|
verfasst am 22.09.2019 in Programmierung: php |
|
Jeder kennt das, man programmiert, macht eine neue Datenbank und möchte ein sicheres Passwort vergeben, aber sich jedes mal eines ausdenken, oder gar immer das selbe vergeben? Nein, das ist keine Option. Daher einfach einen kleinen Generator bauen und mit php ist das sehr einfach.
<?php
function sec_pass($kb,$gb,$sz,$z)
{
$pass = array();
// Variablen definieren, Kleinbuchstaben, Großbuchstaben, Zahlen und Sonderzeichen
$var["kb"] = array("a","b","c","d","e","f","g","h","i",
"j","k","l","m","n","o","p","q","r","s","t",
"u","v","w","x","y","z","ä","ö","ü");
$var["gb"] = array("A","B","C","D","E","F","G","H","I",
"J","K","L","M","N","O","P","Q","R","S","T",
"U","V","W","X","Y","Z","Ä","Ö","Ü");
$var["sz"] = array("!","§","%","/","(",")","=","{","[","]","}","*","+","-","_",".",",","<",">","ß");
$var["z"] = array("1","2","3","4","5","6","7","8","9","0");
// jetzt alles gut per Zufall entscheiden lassen
for ($a=0;$a<$kb;$a++)
{
$pass[] = $var["kb"][rand(0,count($var["kb"])-1)];
}
for ($a=0;$a<$gb;$a++)
{
$pass[] = $var["gb"][rand(0,count($var["gb"])-1)];
}
for ($a=0;$a<$sz;$a++)
{
$pass[] = $var["sz"][rand(0,count($var["sz"])-1)];
}
for ($a=0;$a<$z;$a++)
{
$pass[] = $var["z"][rand(0,count($var["z"])-1)];
}
$var = array();
// jetzt alles gut durchschütteln
shuffle($pass);
for ($a=0;$a<count($pass);$a++)
{
$pass_ret .= $pass[$a];
}
$pass = array();
return $pass_ret;
}
echo sec_pass(12,6,2,12); // ergibt ein Passwort mit 12 Kleinbuchstaben, 6 Großbuchstaben, 2 Sonderzeichen, 12 Zahlen
?> | |
Die Passwörter gut abspeichern, diese kann man sich nicht merken. Die Länge ist variabel, ebenso die Anzahl der jeweiligen Komponenten. Probiert euch aus. |
|
|
|
|
|