Impulz
-
Gesamte Inhalte
277 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Beiträge von Impulz
-
-
Meistens duerfte es so laufen, dass die Session-ID zusammen mit einem Timestamp in eine Datenbank geschrieben wird (vom Script, nicht zwangsweise durch php-Einstellungen) und bei jedem Seitenaufruf des Users der Timestamp aktualisiert wird. Der Counter ueberprueft dann nacher noch wieviele User in den letzten x Minuten aktiv waren.
Das ganze gibt also nur etwa an wieviele User da sind, nicht genau.
Anders ginge es noch dass beim Verlassen der Seite nochmal ein Script aufgerufen wird (mini-popup das sich autom. schliesst oder so) welches dann den Eintrag aus der DB loescht. Killt allerdings jemand seinen Browser, wars das auch.
-
Wow, ich bin beeindruckt. Nicht schlecht muss ich sagen
Hab mich mit Perl bisher noch nicht sonderlich beschaeftigt, daher hab ich mich auch dafuer interessiert.
Danke fuer die Muehe
Michael
-
Danke Danke
Aber dein Perl Ding sah auch nicht schlecht aus, kannste Zeile 2 und 3 mal kurz erklaeren? Ich vermute mal die zweite splittet nach % auf, aber die dritte?
-
Probiers mal so, wenn der Ausschnitt aus dem HTML Code kommt.
<a href="sub_sites/pic_site<?=$seite?>_animation.html" target="_blank">
[/PHP]Falls er in nem PHP-Block per Echo ausgegeben wird:
[PHP]
echo "<a href=\"sub_sites/pic_site".$seite."_animation.html\" target=\"_blank\">"; -
ah so.. na gut.
dann halt
$inhalt=implode("",file("/usr/local/fortune/fortunes"));
$eintraege=explode("\n%\n",$inhalt);
echo $eintraege[rand(0,sizeof($eintraege))];
[/PHP] -
Nicht genau das gleiche, aber genauso effektiv:
$zeilen=file("/usr/local/fortune/fortunes");
echo $zeilen[random(sizeof($zeilen))];
[/PHP] -
"Dont feed the trolls."
Und wie willst du mit PHP eine Datei auf den Rechner des Clients uebertragen??
-
in $result steht nur das Ergebnis des Queries drin, nicht die selektierten Werte bzw 0 wenn das Query fehlgeschlagen ist (z.b. ungueltige Syntax). Du musst aus $result mit mssql_fetch_* erst die eigentlichen Daten holen.
Probiers mal so:
$query = "SELECT COUNT(*) FROM TReport WHERE Nummer='$nummer'";
$result = MSSQL_QUERY($query);
$daten=mssql_fetch_row($result);
if ($daten[0]==0)
{
print "<center>ERROR: Datensatz nicht vorhanden.</center>";
exit();
}
[/PHP](ungetestet)
gruss
Michael
-
Original geschrieben von Druid
So... Punkt 1: In einem weitläufigerem Sinne übergebe ich indirekt auch das Passwort (muss ich ja wohl, sonst kann ich ja keine Verbindung zum SQL-Server mehr aufbauen..)
Hae? Wieso? Wird die Datenbankverbindung mit dem jeweiligen Login des Users aufgebaut?
Als Fallback müsste ich also auch die Session-ID per Hand übergeben an jede einzelne Seite! (-> genauso hoher Traffic)
Das PHP Session-Management hat SIDs per GET als Fallback drin.
Traffic duerfte in nem Firmennetz wohl kaum ne Rolle spielen, insb. wenn es sich um Unterschiede von ein paar Byte handelt.
Ich finde, dass es deshalb ziemlich egal ist, ob ich den verschlüsselten Benutzernamen und das verschlüsselte Passwort übergebe, oder eine Session-ID!!!
Man sollte vertrauliche Daten so selten wie moeglich uebers Netz jagen, Verschluesselung ist hier auch nicht das non-plus-ultra. Jeder der die Seite oeffnen kann, sieht auch die Art der Verschluesselung (da Javascript, anderweitige client-side Verschluesselung duerfte schwierig werden) und kann sie knacken.
Bei ner Session werden die ganzen Daten auf dem Server abgelegt und nur eine Session-ID uebertragen, die keinerlei Auskunft ueber die gespeicherten Daten gibt und deren Gueltigkeit man z.b. zeitlich einschraenken kann indem man ein Timestamp abspeichert wann die Session gestartet wurde.
gruss
Michael
-
Ach so.. jo, clientseitig kannst du mit PHP nichts machen.
Fuer das was du machen willst, brauchste wahrscheinlich ActiveX (brr).
-
jo kannste.
kannst auch backticks nutzen.. also
$textoutput=`c:\windows\logoff.exe`;
-
Hallo,
deine Ueberpruefung ist falsch. Du ueberpruefst auf affected rows, also veraenderte Zeilen.
Bei einem create werden aber keine Zeilen veraendert.
Siehe folgendes:
mysql> create table test (nummer int(20), regel char(255) );
Query OK, 0 rows affected (0.02 sec)
Ueberpruef am besten ob das Query korrekt ausgefuehrt wurde anstatt der affected rows.
gruss
Michael
-
nicht ganz richtig..
das problem ist das fclose in der while schleife.
Du schliesst die Datei nach dem ersten lesevorgang, egal ob du schon am ende bist oder nicht. pack das close hinter die while schleife.
die 'leerzeilen' kommen dadurch zustande dass das schreiben in die datei immer ausgefuehrt wird, selbst beim ersten laden der seite wenn noch gar keine werte durch das formular uebergeben wurden. um den block wo du schreibst muss noch ne bedingung hin ob auch daten vom formular abgeschickt wurden.
-
Also die PHPLib is fuer Sessions ziemlich unnoetig. PHP4 hat selber eine Session-Verwaltung drin. phplib hat noch ne auth dabei, aber die machst du vermutlich selber. Das einzig noch nuetzliche an der phplib is imho die template klasse.
Zu Sessions lies dir am besten folgendes durch:
http://www.koehntopp.de/php/version4_session.html
gruss
Impulz
-
Automatisch weiterleiten kannst du ueber einen Header-Befehl:
header("Location <neue url>");
Die neue URL muss dazu komplett ausgeschrieben werden.
Das funktioniert allerdings nur, wenn bis zu dem Zeitpunkt keinerlei Daten ausgegeben wurden oder wenn Output Buffering aktiv ist.
Michael
-
Das existierende Session-Management is schon eine feine Sache.
Standardmaessig werden Textdateien (die auch nur die groesse der gespeicherten Werte plus Trennzeichen haben) dafuer benutzt.
Allerdings kann man die Save-Routinen selber schreiben, siehe hierzu http://www.php.net/manual/de/function.session-set-save-handler.php
So ist es ohne weiteres moeglich eine mysql-Datenbank zu nutzen und man brauch nit die komplette Session-Verwaltung neu schreiben.
Ob sich das lohnt die Daten in mysql abzulegen haengt wohl von dem System ab. Wenn eh schon viele Festplattenzugriffe erfolgen, mag es sinnvoller sein, einen externen datenbank server zu nutzen, aber wo is das schon der fall.
Impulz
-
jor, wobei das rundet und nit abschneidet.
kommt halt drauf an obs ne rolle spielt oder nit.
-
hmm.. mir faellt so spontan auch keine funktion ein..
notfalls halt so:
$var1=1.2345;
$tmpvar=$var1*10; // -> 12.345
$tmpvar=floor($tmpvar); // schneidet nachkommateil ab -> 12
$var1=$tmpvar/10; // -> 1.2
oder in kurz:
$var1=floor($var1*10)/10;
-
Jor, ich bin mit Weaverslave auch voll zufrieden.
(Hi subj! Du kannst das messer jetzt wieder von meiner Kehle nehmen! .
Impulz
-
Du koenntest es mit backticks probieren.
Also z.b. `uptime`
genauer kenn ich mich mit perl leider auch nit aus
-
Zu dem ersten Beitrag:
Sind die Bilder schon erstellt und kannst du sie mit nem Viewer anschaun? Ich vermute mal, das Script hat nen Fehler und die Fehlermeldung wird anstelle der Bilddaten ausgegeben. Dies is dann natuerlich Datenmuell wenn Bilddaten erwartet werden, daher das rote X, welches einfach nur heisst dass das Bild nicht gefunden oder nicht angezeigt werden kann.
Also probier mal die Header-Anweisung auszukommentieren und das Skript direkt aufzurufen damit du ne Textausgabe erhaelst. Kommen dann Binaerdaten scheint es keinen Fehler zu geben, aber ich vermute es gibt zumindest nen Warning.
Ach ja, und stell sicher dass die GDLib auf dem Server installiert ist und auch das Bildformat das du ausgeben moechtest, unterstuetzt.
Ach ja, und zum Zugriff auf die Bilder isses wichtig welche Rechte der Webserver auf die Bilder selber hat, nit auf das Verzeichnis.
Also:
Verzeichnis:
+r : verzeichnisinhalt kann aufgelistet werden
+w: dateien koennen erstellt und geloescht (aber nicht veraendert) werden
+x : in das verzeichnis kann gewechselt werden
Dateien:
+r: Datei kann gelesen werden
+w: Datei kann veraendert werden
+X: Datei kann ausgefuehrt werden.
(Is zwar jetzt ein wenig offtopic, aber trotzdem gut zu wissen
Zum zweiten Beitrag:
Bei dir fehlt scheinbar die Header-Zeile. Dadurch weiss der Browser nicht wie er mit den Daten umgehen soll und haut sie als Text raus.
Probiers mal mit sowas wie header("Content-Type: image/jpeg") oder je nachdem was fuer ein Bildtyp du ausgeben willst. Ne Liste mit Content/MIME-Types gibts bei SelfHTML.
gruss
Michael
-
Unverschluesselt heisst in diesem fall, dass die daten einfach per POST oder GET auf einen normalen http server uebertragen werden. dabei findet keine verschluesselung statt. Der IE warnt normalerweise beim allerersten Mal wenn du ein Formular abschickst auch. Wenn du das ganz vermeiden willst, musste ueber https arbeiten, aber da kommt dann wahrscheinlich wieder ne meldung dass es jetzt ueber eine sichere verbindung geschickt wird )
-
$zeilenarray=file("dateiname.ext");
foreach ($zeilenarray as $zeile)
{
$tmp=explode("=",$zeile);
$daten[$tmp[0]]=$tmp[1];
}
[/PHP]dann haste $daten als assoziatives array mit den eigenschaften (name, email, ..) als keys und den entsprechenden daten als werten. (notfalls nen vardump machen und schaun):
also im prinzip die eingelesenen zeilen einfach exploden mit = als trennzeichen. dazu darf natuerlich sonst kein weiteres = zeichen im text vorkommen. ansonsten musste mit strpos arbeiten und das erste vorkommen suchen und dann substr verwenden.
gruss
Michael
-
Ja, einige Download-Manager zeigen relativ merkwuerdige Zahlen an.
Flashget beispielsweise huepft oft rum so dass man in einem Moment z.b. 110 und im naechsten dann nur noch 80 hat.. im Mittel landet man dann aber auch bei normalen dsl werten. Scheint einfach nur nen Fehler in der routine zu sein, die den Durchsatz/Zeitraum misst.
PHP Ausgaben während der Ausführung
in Skript- und Webserverprogrammierung
Geschrieben
Mit dem Befehl flush() werden die seit Beginn bzw dem letzten flush angesammelten Ausgaben direkt an Webserver zur Auslieferung an den Client uebergeben.
Allerdings kann es durchaus sein, dass der Webserver, ein Proxy oder der Client selbst das nochmal zwischenspeichert bevor er es ausgibt. So gibt der IE es beispielsweise nur aus wenn sich mind. 255 Zeichen angesammelt haben. Hier muss man ggf manuell noch whitespace erzeugen.
Ausserdem ist zu beachten dass einige Browser Tabelleninhalte nur darstellen, wenn die Tabellen komplett sind, also auch geschlossen.
Genaueres hierzu: http://php.net/flush (englische Version enthaelt mehr infos als die deutsche).