Probleme mit einer Session ID

Hallo ich habe ein Problem mit einer Session ID .
Ich habe für meine Visualisierung einen Webserver im IPS eingerichtet und nutze den , damit Verschiedene Mieter , Stromzähler , Gaszähler und so weiter ablesen können.

Damit jeder nur seine eigenen Daten ablesen kann . Habe ich einen Login eingerichtet . Den ich mit Session ID realisiert habe.

Jetzt das Problem es funktioniert nur wenn ich wenn ich session.use_trans_sid = 1 (auf 1 setze)
und somit den Session Id immer in der Adresszeile übergebe. Was natürlich nicht sehr vorteilhaft ist. Des weiteren funktionieren durch einige Funktion meiner Visualisierung nicht. Weil ich manchmal Variablen übergeben muss in der Adresszeile und usw.

wenn ich session.use_trans_sid = auf 0 setze Fliege ich immer wieder aus meinem Login raus . Weil der ich eine neue Session ID bekommen habe

Hier mal der Teil aus der php.ini .
Übersehe ich was oder macht IPS da Schwierigkeiten.


[Session]
; Handler used to store/retrieve data.
; http://php.net/session.save-handler
session.save_handler = files

; Argument passed to save_handler.  In the case of files, this is the path
; where data files are stored. Note: Windows users have to change this
; variable in order to use PHP's session functions.
;
; The path can be defined as:
;
;     session.save_path = "N;/path"
;
; where N is an integer.  Instead of storing all the session files in
; /path, what this will do is use subdirectories N-levels deep, and
; store the session data in those directories.  This is useful if you
; or your OS have problems with lots of files in one directory, and is
; a more efficient layout for servers that handle lots of sessions.
;
; NOTE 1: PHP will not create this directory structure automatically.
;         You can use the script in the ext/session dir for that purpose.
; NOTE 2: See the section on garbage collection below if you choose to
;         use subdirectories for session storage
;
; The file storage module creates files using mode 600 by default.
; You can change that by using
;
;     session.save_path = "N;MODE;/path"
;
; where MODE is the octal representation of the mode. Note that this
; does not overwrite the process's umask.
; http://php.net/session.save-path
session.save_path = "C:\IP-Symcon\session"

; Whether to use cookies.
; http://php.net/session.use-cookies
session.use_cookies = 1

; http://php.net/session.cookie-secure
;session.cookie_secure =

; This option forces PHP to fetch and use a cookie for storing and maintaining
; the session id. We encourage this operation as it's very helpful in combatting
; session hijacking when not specifying and managing your own session id. It is
; not the end all be all of session hijacking defense, but it's a good start.
; http://php.net/session.use-only-cookies
session.use_only_cookies = 0

; Name of the session (used as cookie name).
; http://php.net/session.name
session.name = PHPSESSID

; Initialize session on request startup.
; http://php.net/session.auto-start
session.auto_start = 0

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
; http://php.net/session.cookie-lifetime
session.cookie_lifetime = 600

; The path for which the cookie is valid.
; http://php.net/session.cookie-path
session.cookie_path = /

; The domain for which the cookie is valid.
; http://php.net/session.cookie-domain
session.cookie_domain =

; Whether or not to add the httpOnly flag to the cookie, which makes it inaccessible to browser scripting languages such as JavaScript.
; http://php.net/session.cookie-httponly
session.cookie_httponly =

; Handler used to serialize data.  php is the standard serializer of PHP.
; http://php.net/session.serialize-handler
session.serialize_handler = php

; Defines the probability that the 'garbage collection' process is started
; on every session initialization. The probability is calculated by using
; gc_probability/gc_divisor. Where session.gc_probability is the numerator
; and gc_divisor is the denominator in the equation. Setting this value to 1
; when the session.gc_divisor value is 100 will give you approximately a 1% chance
; the gc will run on any give request.
; Default Value: 1
; Development Value: 1
; Production Value: 1
; http://php.net/session.gc-probability
session.gc_probability = 1

; Defines the probability that the 'garbage collection' process is started on every
; session initialization. The probability is calculated by using the following equation:
; gc_probability/gc_divisor. Where session.gc_probability is the numerator and
; session.gc_divisor is the denominator in the equation. Setting this value to 1
; when the session.gc_divisor value is 100 will give you approximately a 1% chance
; the gc will run on any give request. Increasing this value to 1000 will give you
; a 0.1% chance the gc will run on any give request. For high volume production servers,
; this is a more efficient approach.
; Default Value: 100
; Development Value: 1000
; Production Value: 1000
; http://php.net/session.gc-divisor
session.gc_divisor = 100

; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
; http://php.net/session.gc-maxlifetime
session.gc_maxlifetime = 1440

; NOTE: If you are using the subdirectory option for storing session files
;       (see session.save_path above), then garbage collection does *not*
;       happen automatically.  You will need to do your own garbage
;       collection through a shell script, cron entry, or some other method.
;       For example, the following script would is the equivalent of
;       setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
;          cd /path/to/sessions; find -cmin +24 | xargs rm

; PHP 4.2 and less have an undocumented feature/bug that allows you to
; to initialize a session variable in the global scope, even when register_globals
; is disabled.  PHP 4.3 and later will warn you, if this feature is used.
; You can disable the feature and the warning separately. At this time,
; the warning is only displayed, if bug_compat_42 is enabled. This feature
; introduces some serious security problems if not handled correctly. It's
; recommended that you do not use this feature on production servers. But you
; should enable this on development servers and enable the warning as well. If you
; do not enable the feature on development servers, you won't be warned when it's
; used and debugging errors caused by this can be difficult to track down.
; Default Value: On
; Development Value: On
; Production Value: Off
; http://php.net/session.bug-compat-42
session.bug_compat_42 = On

; This setting controls whether or not you are warned by PHP when initializing a
; session value into the global space. session.bug_compat_42 must be enabled before
; these warnings can be issued by PHP. See the directive above for more information.
; Default Value: On
; Development Value: On
; Production Value: Off
; http://php.net/session.bug-compat-warn
session.bug_compat_warn = On

; Check HTTP Referer to invalidate externally stored URLs containing ids.
; HTTP_REFERER has to contain this substring for the session to be
; considered as valid.
; http://php.net/session.referer-check
session.referer_check =

; How many bytes to read from the file.
; http://php.net/session.entropy-length
session.entropy_length = 0

; Specified here to create the session id.
; http://php.net/session.entropy-file
;session.entropy_file = /dev/urandom
session.entropy_file =

; http://php.net/session.entropy-length
;session.entropy_length = 16

; Set to {nocache,private,public,} to determine HTTP caching aspects
; or leave this empty to avoid sending anti-caching headers.
; http://php.net/session.cache-limiter
session.cache_limiter = 

; Document expires after n minutes.
; http://php.net/session.cache-expire
session.cache_expire = 180

; trans sid support is disabled by default.
; Use of trans sid may risk your users security.
; Use this option with caution.
; - User may send URL contains active session ID
;   to other person via. email/irc/etc.
; - URL that contains active session ID may be stored
;   in publically accessible computer.
; - User may access your site with the same session ID
;   always using URL stored in browser's history or bookmarks.
; http://php.net/session.use-trans-sid
session.use_trans_sid = 1

; Select a hash function for use in generating session ids.
; Possible Values
;   0  (MD5 128 bits)
;   1  (SHA-1 160 bits)
; http://php.net/session.hash-function
session.hash_function = 0

; Define how many bits are stored in each character when converting
; the binary hash data to something readable.
; Possible values:
;   4  (4 bits: 0-9, a-f)
;   5  (5 bits: 0-9, a-v)
;   6  (6 bits: 0-9, a-z, A-Z, "-", ",")
; Default Value: 4
; Development Value: 5
; Production Value: 5
; http://php.net/session.hash-bits-per-character
session.hash_bits_per_character = 5

; The URL rewriter will look for URLs in a defined set of HTML tags.
; form/fieldset are special; if you include them here, the rewriter will
; add a hidden <input> field with the info which is otherwise appended
; to URLs.  If you want XHTML conformity, remove the form entry.
; Note that all valid entries require a "=", even if no value follows.
; Default Value: "a=href,area=href,frame=src,form=,fieldset="
; Development Value: "a=href,area=href,frame=src,input=src,form=fakeentry"
; Production Value: "a=href,area=href,frame=src,input=src,form=fakeentry"
; http://php.net/url-rewriter.tags
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="




Wäre über Hilfe sehr dankbar.

MFG

Mastershort

vielleicht wäre der Ansatz „pro User ein dediziertes WFE“ besser umsetzbar, da Rechteverwaltung in IPS via Passwort?

Ich arbeite komplett ohne das ips webfrontend. Sondern ich arbeite mit einer datenbank in die ich die werte einschreibe und nutze die un meiner webseite . Sowie hier z.b DDC-WebControl

was nichts daran ändern würde das das session-handling nicht richtig funktioniert.

(und nein, das ist kein trolling, ich hab bei mastershort versucht das session-handling hinzubekommen)

das hab ich auch nicht behauptet. Ich hab einen Lösungsansatz aufzeigen wollen. Der ist in dem Kontext scheinbar nicht realisierbar, also müßt Ihr weiter nach einer Lösung suchen.

Hat hier noch keiner mit Session´s gearbeitet?

Ich verzweifel hier gerade ein wenig

folgender Code


<?php
session_start();

echo SID;

if (empty($_SESSION['zaehler'])) {
  $_SESSION['zaehler'] = 1;
} else {
  $_SESSION['zaehler']++;
}
echo "<br />" . $_SESSION['zaehler'];
?>

Müsste prinzipiell bei jedem Aufrauf als SID den gleichen Wert ausgeben und den Zaehler eins hochzählen.
Praktischerweise bekomme ich bei jedem Refresh ne neue SessionID weswegen der zweite Part dann auch nicht funktionieren kann.

Ich finde aber auch nirgends nen Aussagefähiges Error-Log das mir sagen könnte wo der Fehler liegt.

Hat jemand ne Idee wo ich ein solches Log finde oder was ich IPS beibringen muss damit es richtiges Session-Handling kann?

einer session mit SID bleibt nur bei das durchlinken gleich.
seite A (SID= session_start()) und via link auf seite B -> dann nur bleibt die SID gleich. (Weitere werte werden also auch durchgegeben)

testen:
seite A.php machen und nach B.php verlinken
in B dan dein zähler per echo rausgeben <- jetzt geht’s
(und besser die function „isset($_SESSION)&& isset($_SESSION[‚zahler‘])“ nutzen)

(der trick besteht darin dass php automatisch den SID als erstes argument im link zu B mit reinschreibt… ggf selbst den SID mit in die links reinnehmen ala: <a href=„seiteB.php?“.SID."&argument1=0"> linken mit eigene SID verwaltung</a>


user-verwaltung: jeden User eine startseite geben … und nur uber diese startseite kan der User weitermachen. $_SESSION[‚User‘]=‚ich‘ in die startseite reinschreiben. Nächste seite dan checken ob


if(isset($_SESSION['User'])) {
    if($_SESSION['User']=='ich'){
        $ok = true;
    }
} else {
    echo "Nicht berechtigd";
}
if ($ok) { // weiterfahren}

Wenn einem User direkt auf seite 2 kommt, bekommt er auch eine SID, aber weil die [‚User‘] parameter nicht mit in die SID rein sitzt, bekommt der „Nicht berechtigd“.

einer session mit SID bleibt nur bei das durchlinken gleich.
seite A (SID= session_start()) und via link auf seite B -> dann nur bleibt die SID gleich. (Weitere werte werden also auch durchgegeben)

Das ist so nicht korrekt.

ich quote einfach mal de.php.net:

interpretiert:
Wenn ich Seite A das erste mal aufrufe bekomme ich bei einem session_start() eine SID zugewiesen, beim zweiten mal hat der Webserver zwei Möglichkeiten mich wieder zu erkennen:

[ul]
[li] ich habe die SID per GET/POST übergeben
[/li][li] ich habe die SID in einem lokalen Cookie gespeichert
[/li][/ul]

Ersteres funktioniert, um Session-Hijacking zu vermeiden nutzt man aber im Regelfall die Speicherung im Cookie. Und das funktioniert nicht.
Der Cookie existiert, ich bekomme trotzdem jedesmal eine neue SID zugewiesen.

Da meine Test-Seite so wie ich sie geschrieben habe in einem normalen httpd funktioniert kann ich das ganze egtl nur noch auf IPS schieben