Suche auf lima-city
-
in: Rest-Zeit bis Session abgelaufen ist ?
geschrieben von spiele2u
hackyourlife schrieb:
Was hier allerdings eine wichtigere Frage ist: will der TE nur ermitteln wie lange seine Session noch läuft oder will er sie selbst auf eine gewisse Laufzeit begrenzen?
eigentlich beides
... aber das "selbst auf eine gewisse Laufzeit begrenzen" habe ich ja hinbekommen,
(siehe oben im Beispiel: ... "Login Aktiv Zeit" mal auf nur 30 Sekunden)
offen ist noch die Frage, welche Zeit der User (ohne eigene Begrenzung) inaktiv bleiben kann, also wann die Session von selbst enden würde, wenn kein
wieder ausgeführt wirdsession_start()
... ist das session.cache_expire oder session.cookie_lifetime ?
hackyourlife schrieb:
Wenn nur ermittelt werden soll wie lange sie läuft hilft es eventuell zu wissen, dass die Laufzeit bei jedem Aufruf von
wieder verlängert wird.session_start()
zum Logout nach selbst bestimmter Zeit
habe ich die Login-Zeit in die Session gespeichert:$_SESSION['tmsp'] = $timestamp;
und kann diese ja dann gegen $lifetime mit der Differenz des aktuellen $timestamp vergleichen (siehe oben)
mal angenommen,
ich setzte diese selbt bestimmte Zeit größer als die eigenliche (interne) Laufzeit der Session,
dann kann bei längerer Inaktivität des User (also
wird nicht wieder ausgeführt)session_start()
die Session auch "vorher" beendet sein als von mir (in $lifetime) selbst festgelegt.
schön wären 2 verschiedene Ausgaben (als CountDown mit JavaScript, zählt ohne Seiten-Reload))
a) der eine sagt: Die Sitzung ist noch noch xx Minuten und yy Sekunden gültig (= eigene Laufzeit)
b) der andere sagt: Die Sitzung endet nach xx Minuten und yy Sekunden Inaktivität (= Session Laufzeit)
wobei nach jeder Aktivität der zweite Counter (b) wieder neu beginnt, der erste (a) aber weiter läuft
evtl. sogar noch einen aus Script erzeugten reload zur LogOut-Seite, wenn a) oder b) abgelaufen
---> Info zur Erklärung / das Problem genauer erklärt:
User kann im Login-Bereich Texte eingeben, und manche User brauchen dazu sehr lange,
sie gehen zwischendurch mal ans Telefon, aufs Klo oder machen sontige Pausen,
dann schreiben Sie weiter, wollen endlich "Speichern" und wenn Session beendet ist,
dann sind alle Eingaben verloren, weil beim "Speichern" der Login nicht mehr aktiv war.
Bisher ist für den User nicht erkennbar, wieviel (Rest-) Zeit er noch zur Eingabe hat ...
... also will ich zumindest einen Hinweis ausgeben, wie lange die Rest-Zeit noch ist,
und ... wenn möglich ... bei Ablauf der Session (Login wird inaktiv) als Entwurf speichern
damit die User-Eingaben nicht verloren gehen, sondern nach erneutem Login wieder aufrufbar sind
Idee ... evtl kann ich an das Problem ja auch noch anders ran gehen?
... z.B. alle 2 Minuten als Entwurf zwischenspeichern (ohne Reload, mit Ajax im Hintergrund)
aber eigentlich genügt es ja einmal, wenn Session / Login beendet wird ... oder? ... andere Ideen?
-
in: Rest-Zeit bis Session abgelaufen ist ?
geschrieben von spiele2u
Hallo
habe jetzt die Start-Zeit der Session mit in die $_SESSION rein gespeichert
damit ich die bisher abgelaufene Zeit (und somit Rest-Zeit) ermitteln kann
mein PHP-Code sieht jetzt so aus:
... zum Testen habe ich die "Login Aktiv Zeit" mal auf nur 30 Sekunden gesetzt ...
<?php // --------------------------------------------------- $username = 'demo'; // ---- Username $password = 'test'; // ---- Passwort im Klartext $saltkey1 = 'x3TzgF4'; // ---- ein geheimer Salt-Key $pass_hash = md5($saltkey1.$password); // ---- md5 Hash aus Passwort und Salt-Key date_default_timezone_set('Europe/Berlin'); $timestamp = time(); // ---- aktueller TimeStamp $lifetime = 30; // ---- Login Aktiv Zeit in Sekunden // --------------------------------------------------- session_start(); // ---- Session starten // --------------------------------------------------- // --------- Eingabe ---- Username und Passwort ---- if ( !empty($_REQUEST['pwd']) && !empty($_REQUEST['usr']) ) { $login_user = trim(chop($_REQUEST['usr'])); $login_pass = trim(chop($_REQUEST['pwd'])); $login_hash = md5($saltkey1.$login_pass); // --------- Passwort Prüfung ---- if ($username == $login_user && $login_hash == $pass_hash) { $_SESSION['user'] = $login_user; $_SESSION['xpwd'] = $login_hash; $_SESSION['tmsp'] = $timestamp; $msg = 'OK ... der Login als User: ".$login_user." war erfolgreich.'; } else { session_unset(); session_destroy(); $msg = 'Fehler ... die Zugangsdaten sind nicht richtig.'; } } else { $msg = 'Zum Login bitte den Username und das Passwort eingeben.'; } // --------------------------------------------------- // --------- Seiten Auswahl ---- if ( !empty($_REQUEST['a']) ) { $run_a = trim(chop($_REQUEST['a'])); } else { $run_a = 'start'; } // --------- Seite: logout ---- if ($run_a == 'logout') { $msg = 'Logout erfolgreich ... die Sitzung wurde beendet.'; session_unset(); session_destroy(); } // --------------------------------------------------- if ( isset($_SESSION['xpwd']) && $_SESSION['xpwd'] == $pass_hash) { $logstart = $_SESSION['tmsp']; $logdauer = ( $timestamp - $logstart ); $rest_sec = ( $lifetime - $logdauer ); if ($rest_sec < 1) { $msg = 'Der Login vom '. date('Y-m-d (H:i:s)', $logstart) .' ist nicht mehr aktiv. Bitte neu einloggen.'; session_unset(); session_destroy(); } else { $msg = 'Der Login vom '. date('Y-m-d (H:i:s)', $logstart) .' ist noch '.$rest_sec.' Sekunden aktiv.'; } } print "<br />\n"; print "<span style=\"color:blue;\">".$msg."</span>\n"; print "<br />\n"; // --------------------------------------------------- if ( isset($_SESSION['xpwd']) && $_SESSION['xpwd'] == $pass_hash) { print "<br />\n"; print "<br />\n"; print " --- <a href=\"?a=start\">HOME</a> "; print " --- <a href=\"?a=edit\">EDIT</a> "; print " --- <a href=\"?a=logout\">LOGOUT</a> "; print "<br />\n"; print "<br />\n"; print "<br />Seite: ".$run_a."\n"; print "<br />\n"; print "<br />\n"; print "<pre style=\"background:#DEDEDE;\">\n"; print_r($_SESSION); print "</pre>\n"; print "<br />\n"; print "<br />\n"; } else { // --------------------------------------------------- $login_form = ' <form name="form1" method="post" action=""> Username: <input type="text" name="usr" size="24" maxlength="36" /> <br /> Passwort: <input type="text" name="pwd" size="24" maxlength="36" /> <input type="hidden" name="a" value="start" /> <br /> OK: <input type="submit" name="go" value="Login" /> </form> '; print "<br />\n"; print "<br />\n"; print $login_form; print "<br />\n"; print "<br />\n"; print "<br /><u>Demo/Test Zugangsdaten:</u>\n"; print "<br /> Username: <strong>".$username."</strong>\n"; print "<br /> Passwort: <strong>".$password."</strong>\n"; print "<br />\n"; } // --------------------------------------------------- ?>
es scheint so ja zu funktionieren, Logout per Link-Klick bzw. nach xx Sekunden
... oder sieht jemand noch einen Fehler ?
-
in: Rest-Zeit bis Session abgelaufen ist ?
geschrieben von spiele2u
Hallo
Wie kannich ermitteln, wann eine Session abgelaufen sein wird ?
was ist der Unterschied von session.cache_expire und session.cookie_lifetime
ich habe als Test eine SESSION gestartet und versuche an Zeit-Werte zu kommen:
session_start(); $expires = session_cache_expire(); $params = session_get_cookie_params(); $lifetime = $params['lifetime']; print "<br /> Expires: ".$expires."\n"; // --- in Minuten print "<br /> Lifetime: ".$lifetime."\n"; // --- in Sekunden
Als Ergebnis bekomme ich:
Expires: 60 Lifetime: 86400
Welcher Wert sagt jetzt was aus? .... wie lange existiert jetzt die Session?
86400 Sekunden = 1440 Minuten .... oder. ... 60 Minuten = 3600 Sekunden
Macht es überhaupt Sinn,
dass session.cache_expire und session.cookie_lifetime unterschiedliche Zeiten sind?
... wenn die Session "abgelaufen" ist, braucht man doch auch das Cookie nicht mehr ?
PS: das Beispiel / derTest läuft nicht auf Lima-City-Webspace
hier auf Lima bekomme ich Expires: 180 und als Lifetime den Wert: 0 (Null)
.... wird hier garkein Session-Cookie angelegt ?
in beiden Fällen ist session.cache_limiter = nocache
Der Sinn des ganzen ist es, dem User zu sagen:
Deine Session (Dein Login) ist noch xx Minuten und yy Sekunden aktiv.
... wie kann ich das machen ? ... Rest-Laufzeit bis Session inaktiv wird ermitteln / ausgeben ?
-
in: Abfrage aus zwei Tabellen
geschrieben von spiele2u
nein, datum1 und datum2 sind dann in der Ausgabe, aber nicht für die Abfrage,
in der Abfrage musst du (glaub ich) die Spalten direkt ansprechen (bin mir nicht 100% sicher)
probier's aus :)
als Beispiel evtl. so machen (mehrere Sortierungen durch Komma getrennt)
... ORDER BY tbl_spieltage.datum ASC, tbl_termine.datum ASC ...
kommt drauf an, wie herum du es brauchst .... oOo ... geiler Satz :xD
... gemeint ist ASC oder DESC (aufsteigende oder absteigende Reihenfolge)
Frage: warum eigentlich nicht so:
--> Suche je Spieltag wo Datum in Termine ist gleich Spieltag-Datum ?
also je Spieltag eine eigene Abfrage, also alle Termine zum Spieltag
$sql = "SELECT tbl_termine.datum, tbl_termine.ort, tbl_termine.wasauchimmer FROM tbl_termine, tbl_spieltage WHERE DAYOFYEAR(tbl_termine.datum) = DAYOFYEAR(tbl_spieltage.datum) ORDER BY tbl_termine.datum ASC LIMIT 10";
so bekommst Du alle Termine für einen Spieltag (zu einem Datum aus tbl_spieltage)
DAYOFYEAR() gibt Dir einen Wert zwischen 1 und 366
... evtl eine Fehlerquelle bei Saison über Jahreswechsel
vielleicht kennt hier jemand anderes dafür ne bessere Lösung !!!! .... ist nur ne Idee von mir
aber vom Prinzip her ... Alle Termine die am gleichen Tag sind wie der Spieltag
und dann halt für 10 Spieltage 10 Abfragen
PS:
ich weiss ja nicht was noch wichtiges in tbl_spieltage drein steckt (ausser das Datum)
-
in: Abfrage aus zwei Tabellen
geschrieben von spiele2u
Wenn in beiden Tabellen die Spalte datum den gleichen Namen hat,
kannst Du mit AS die Spalten-Namen für die Ausgabe umbenennen
ungefähr so
$sql = "SELECT tbl_termine.datum AS datum1, tbl_spieltage.datum AS datum2, tbl_termine.ort, tbl_spieltage.verein FROM tbl_termine, tbl_spieltage WHERE tbl_termine.datum > '":$startdate."' AND tbl_termine.datum < '":$enddate."' AND tbl_spieltage.datum > '":$startdate."' AND tbl_spieltage.datum < '":$enddate."' ORDER BY ..... LIMIT 10";
Die SELECT Abfrage kannst du natürlcih ändern / erweitern um die Spalten zu holen die Du brauchst
Die WHERE Abfrage musst Du natürlich an Deine Struktur anpassen
also hier im BSP Termine zwischen einem startDatum und einem endeDatum
dafür gib es aber sicher bessere Möglichkeiten ... z.B. BETWEEN oder sowas
was Du mit "über kreuz" ordnen meinst, musst Du nochmal erklären
evtl kannst Du die Daten ja auch nach der Abfrage im Array entsprechend sortieren
-
in: HTML Fragen : fragt einfach drauf los ich antworte immer :)
geschrieben von spiele2u
maxi1997sch schrieb:
Wer Fragen zu HTML hat der soll mich fragen ich antworte so schnell ich kann :)
Wer ist dieser HTML und was will der von mir ?
-
in: neue Verzeichnis-Struktur erstellen
geschrieben von spiele2u
simuliertes schrieb:
Mach's mit explode.
jo, Danke, jetzt hab ich es (glaub ich) ganz gut gelöst
// ------------------------------------- foreach($data as $filedata) { echo "<br /><u>".$filedata['filename']."</u>\r\n"; $datei = strrchr($filedata['filename'], "/"); $dpfad = str_replace($datei, "", $filedata['filename']); $datei = trim($datei, "/"); $dpfad = trim($dpfad, "/"); if (empty($datei)) { $datei = $dpfad; $dpfad = ''; } if ( strpos($dpfad, "/") ) { $subpfad = explode("/",$dpfad); $sanz = count($subpfad); $gopfad = array(); for ($i=0; $i<$sanz; $i++) { if ($i == 0) { $tmppfad = $subpfad[$i]; // ---- erste Ebene ---- $gopfad[$i] = $tmppfad; } else { $tmppfad = $tmppfad.'/'.$subpfad[$i]; $gopfad[$i] = $tmppfad; } if (!is_dir($zielpfad.$gopfad[$i])) { mkdir($zielpfad.$gopfad[$i], 0755); echo "<br />Neues Verzeichnis: <strong>".$gopfad[$i]."</strong>\r\n"; } } } else { if (!is_dir($zielpfad.$dpfad)) { mkdir($zielpfad.$dpfad, 0755); echo "<br />Neues Verzeichnis: <strong>".$dpfad."</strong>\r\n"; } } if (!empty($datei)) { if (!file_exists($zielpfad.$dpfad.'/'.$datei)) { $handle = fopen($zielpfad.$dpfad.'/'.$datei,"w", 0755); fwrite($handle,$filedata['content']); echo "<br />Neue Datei: ".$dpfad."/<strong>".$datei."</strong>\r\n"; fclose($handle); } } echo "<br /> \r\n"; echo "<hr />\r\n"; } // -------------------------------------
vielleicht kann das ja noch jemand anderes gebrauchen
ist z.B. ganz nützlich um Zip file Content zu schreiben
:)
-
in: neue Verzeichnis-Struktur erstellen
geschrieben von spiele2u
Hallo
ich habe ein Script, welches mir eine Verzeichnis-Struktur erstellen soll.
und mein Problem sind dabei leere Verzeichnisse
Daten-Struktur ist so, dass ich ein 2D Array habe mit i 2ter Ebene keys: filename und content
filename gibt den Pfad und Dateiname an, in content ist der jeweilige Datei-Inhalt
es geht mir jetzt um die Werte in filename (Ordnerstruktur und Dateiname)
Daten-BSP: (ohne content)
array ( [0] => array ( [filename] = > /datei.php [content] => .... ) [1] => array ( [filename] = > /ordner1/datei.php [content] => .... ) [2] => array ( [filename] = > /ordner2/ordner3/datei.php [content] => .... ) [3] => array ( [filename] = > /ordner2/ordner3/ordner4/datei.php [content] => .... ) ... usw. )
wie kann ich jetzt die jeweilige Ordner-Struktur anlegen
um dann die Datei in den "richtigen" Ordner zu schreiben ?
bisher mache ich es so
$zielpfad = "neu/"; // ---- alles ablegen im Ordner $zielpfad --- foreach($data as $item) { // ---- Ordner finden ---- $datei = strrchr($item['filename'], "/"); $dpfad = str_replace($datei, "", $item['filename']); // ---- führende Slashes entfernen ---- $datei = trim($datei, "/"); $dpfad = trim($dpfad, "/"); // ---- End-Slashes an Pfad ---- if (!empty($dpfad)) { $dpfad = $dpfad."/"; } // ---- Neuen Pfad anlegen ---- if (!empty($dpfad) && !is_dir($zielpfad.$dpfad)) { mkdir($zielpfad.$dpfad, 0755); echo "<br />Neues Verzeichnis: <strong>".$dpfad."</strong>\r\n"; } // ---- Neue Datei in Pfad anlegen ---- $handle = fopen($zielpfad.$dpfad.$datei,"w", 0755); fwrite($handle,$item['content']); echo "<br />Neue Datei: <strong>".$datei."</strong>\r\n"; fclose($handle); }
das funktioniert aber nicht mit Ordnern ohne Datei,
also nicht wenn ein Ordner "nur" Ordner enthält !?!
also ich kann mit mkdir() nicht direkt ordner2/ordner3/ anlegen
sondern ich denke ich muss erst ordner2/ und dann ordner3/ anlegen
ok, wohl einzelne Ordner zählen und nacheinander anlegen
... aber wie am besten ?
-
in: Werte aus Textdatei lesen, und in eine Mysql-Datenbank adden
geschrieben von spiele2u
Hallo
INSERT INTO geht nicht mit SET sondern mit VALUES
INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...)
ein WHERE bei INSERT ist Quatsch, denn du erstellst ja neue Einträge,
das macht nur Sinn bei UPDATE ... (wo man mit SET arbeitet) oder bei DELETE FROM ...
zudem solltest noch mysql_real_escape_string() für alle Einträge benutzen
Willst Du neue Einträge erstellen oder bestehende Updaten
(oder einen Mix aus beidem, dann muss Du vorher prüfen
welche Neu sind, und welche "nur" ein Update brauchen)
Wenn z.B. ID 1111 schon in der Darenbank ist, dann UPDATE
$updatearray = ('1111', '2222', '1234'); // --- nur diese IDs updaten foreach($lines as $line) { $line = chop($line); $data = explode(',',$line); $id = $data[0]; $name = $data[1]; $tag = $data[2]; $rank = $data[3]; $name = mysql_real_escape_string($name); $tag = mysql_real_escape_string($tag); $rank = mysql_real_escape_string($rank); if ( in_array($id, $updatearray) ) { $res = mysql_query("UPDATE tabelle SET name='$name', tag='$tag', rank='$rank' WHERE id = '$id' "); if (!$res) { echo "<br />Fehler !!! <br />\r\n". mysql_error(); exit; } else { echo "<br />Update der ID: ".$id." \r\n"; } }
und da Du ja mit WHERE id= auswählst, brauchst Du id auch nicht neu setzen
-
in: Ein Element aus JavaScript Array ausgeben?
geschrieben von spiele2u
fabo schrieb:
Weil es "new Array()" und nicht "New Array()" heißt :)
das sit Alles ?! ... lach !!!! unglaublich,
und ich dachte schon mein Browser kann kein JS mehr weil der Code sonst ja stimmt
oOo
und einfach var pooltext = []; ist dann noch besser, da kann man weniger "falsch" machen ...
Danke Vielmals !! -
in: Unterschied von include() und require() ?
geschrieben von spiele2u
ahh ok Danke
also merke (ich mir): nutze nie require() innerhalb einer Schleife
DANKE für das Erklärungs-Zitat
EDIT: ... zum test von drafed-map ... vielleicht war das vor PHP5 mal so
und ist jetzt kein Problem mehr, nur so ne Vermutung
aber der Teil aus dem Zitat: "Der Aufruf wird also durch die aufgerufene Datei ersetzt."
macht echt keinen Sinn, das würde ja den folgenden Code abschneiden ?! -
in: verlinkung auf profil account
geschrieben von spiele2u
Hallo
wenn der Link in Deiner eMail so ist: www.meinehomepage.it/vorname_nachname
dann wirst Du evtl mod_rewrite brauchen, um vorname und nachname zu ermitteln
etwa so:
RewriteRule ^/(.*)_(.*) /index.php?v=$1&n=$2 [L]
wenn Du Den Link in der Email aber so gestaltest: www.meinehomepage.it?v=vorname&n=nachname
dann kannst Du direkt mit $_GET auf die 2 URL Parameter v und n zugreifen (ohne Mod_Rewrite)
Ausgabe wäre dann etwa so:
echo "<br /> Hallo ".$_GET['v']." ".$_GET['n']." auf der Homepage \r\n";
Aber (!) das ist noch sehr unsicher, denn jeder kann Dir in den $_GET Variablen Schadcode übermitteln
besser ist es, die $_GET Variablen vor der Ausgabe abzufangen und evtl. Schadcode auszufiltern
// ------ Beispiel für Eingabe-Filter ------- if (!empty($_GET['v'])) { $vorname = stripslashes(htmlentities($_GET['v'])); } if (!empty($_GET['n'])) { $nachname = stripslashes(htmlentities($_GET['n'])); } // ------ nur Buschtaben und _ und - zulassen ------- $vorname = preg_replace('/[^A-Za-z_-]/', '', $vorname); $nachname = preg_replace('/[^A-Za-z_-]/', '', $nachname); echo "<br /> Hallo ".$vorname." ".$nachname]." auf der Homepage \r\n";
habe das nicht getestet, ist nur grob die Idee ... -
in: Unterschied von include() und require() ?
geschrieben von spiele2u
Hallo
was ist eigentlich der Unterschied zwischen include() und require() ?
beides läd doch den Inhalt einer anderen Datei, gibt es überhaupt einen Unterschied ?
und was von beidem sollte man verwenden, umd ein Script
je nach Anfrage aus "Bausteinen" zusammen zu stellen
-
in: Php-fehlermeldung bei Lima-City aktivieren
geschrieben von spiele2u
Hallo
Du kannst in der .htaccess mit php_value error_reporting
auch einstellen, welche Art von Fehler ausgegeben werden soll
... gefunden im Lima-City Forum: https://www.lima-city.de/thread/php-debug-modus
dort steht auch eine Tabelle mit Werten je Error Message Type,
und wie man diese kombiniert (minus oder plus)
viel Spaß ! -
in: Ein Element aus JavaScript Array ausgeben?
geschrieben von spiele2u
Hallo
ich versuche gerade aus einem Javascript Array (mit im BSP 5 Elemente)
per Zufall ein Element auszuwählen und deses dann auszugeben
<script type="text/javascript"> var pooltext = New Array(); pooltext[0] = 'Alle Vögel sind schon da'; pooltext[1] = 'Dicke Bauern, dumme Kartoffeln'; pooltext[2] = 'Was ist hier eigentlich los'; pooltext[3] = 'Jeder kann aber nicht jeder will'; pooltext[4] = 'Lalala Bl bla blabla blubber blubb'; var len = pooltext.length; var zx = Math.round(Math.random() * (len-1)); document.write(pooltext[zx]); </script>
aber es funktioniert nicht, keine Ausgabe, ... aber was ist denn falsch?
Danke für Hilfe