Perché "session_start" mi cambia l'impaginazione su explorer?

  • Creatore Discussione Creatore Discussione kief
  • Data di inizio Data di inizio

kief

Nuovo Utente
9 Lug 2012
18
0
0
Ciao
ho creato una pagina web di login per accedere ad area privata all'interno del sito e ho utilizzato il comando SESSION_START. In pratica ho aggiunto il seguente codice all'inizio della pagina.

PHP:
<?php
session_start();
if(!isset($_POST['submit'])) {
?>

//segue il codice del layout e poi il codice del form...

<form method="POST" id="login">
  <table width="200" border="0">
    <tr>
      <td><label for="username" class="testo">Username</label></td>
      <td>
      <input name="username" type="text" id="username" size="30" style="width: 180px;"></td>
    </tr>
    <tr>
      <td><label for="pass" class="testo">Password</label></td>
      <td><input name="pass" type="password" id="pass" size="30" style="width: 180px;"></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><input type="submit" name="submit" id="submit" value="Invia"></td>
    </tr>
  </table>
</form>
<p>
  <?php
}
else {
	include 'private/config.php';
	include 'connect.php';
	$user = mysql_real_escape_string($_POST['username']);
	$pass = mysql_real_escape_string($_POST['pass']);
	
	$query = "SELECT username, password FROM utenti WHERE username = '{$user}' AND password = '{$pass}'";
	$result = mysql_query($query,$conn);
    $num_rows = mysql_num_rows($result);
	if ($num_rows == '1'){
		$_SESSION['login'] = "logged";
        header('Location:admin_news.html');
		}
	else{
		header('Location:login_error.html');
	}
}
?>

il problema è che quando apro la pagina con explorer mi si scombina tutto. il layout del sito, definito tramite css esterno, si perde. Ho provato a togliere il codice e subito il layout si riassesta.
Con firefox il problema non sussiste e non si presentava neanche quando ho testato il sito su un hosting gratuito....

perchè qui succede???

sono conosciute delle incompatibilità di qualche tipo con il codice e qualche tipo di hosting?
 
Ultima modifica di un moderatore:
forse ho capito...a quanto pare nel mio servizio hosting, poichè è possibile personalizzare il file php.ini devono essere attivati le sessioni...
mah...


in particolare mi viene data la possibilità di creare un file php.ini nella mia cartella html_public e con htaccess permettere che vengano letti i parametri personali.

qualcuna sa dirmi come si fa? che modifiche vanno fatte al file php?

grazie
 
Ultima modifica:
ciao
questa per me è nuova, ho diverse pagine con session start ma non si scompina nulla, anche perche quella parte di codice non diventa html.

p.s.
quando scrivi del codice racchiudilo tra gli appositi tag (barra formattazione post 2° riga ultime tre iconcine CODE, HTML, PHP)
 
ciao,
io sto usando explorer 9
ho provato anche a contattare l'assistenza dell'hosting e difatto anche loro mi hanno detto che dovrebb essere questione di configurare adeguatamente php.ini attivando le sessioni
il punto è che non so come si faccia.

di default il servizio hosting configura il php.ini così:

[table="width: 500, class: grid"]
[tr]
[td]Sottosezione[/td]
[td]Direttiva[/td]
[td]Info[/td]
[td]Valore[/td]
[/tr]
[tr]
[td]Language Options[/td]
[td]safe_mode[/td]
[td][/td]
[td]Off[/td]
[/tr]
[tr]
[td]Language Options[/td]
[td]asp_tags[/td]
[td]Allow ASP-style <% %> tags.[/td]
[td]Off[/td]
[/tr]
[tr]
[td]main[/td]
[td]session.save_path[/td]
[td]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. As of PHP 4.0.1, you can define the path 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[/td]
[td]/tmp[/td]
[/tr]
[tr]
[td]File Uploads[/td]
[td]file_uploads[/td]
[td]Whether to allow HTTP file uploads.[/td]
[td]On[/td]
[/tr]
[tr]
[td]Paths and Directories[/td]
[td]include_path[/td]
[td]Windows: "\path1;\path2" c:\php\includes[/td]
[td].:/usr/lib/php:/usr/local/lib/php[/td]
[/tr]
[tr]
[td]Data Handling[/td]
[td]register_globals[/td]
[td]You should do your best to write your scripts so that they do not require register_globals to be on; Using form variables as globals can easily lead to possible security problems, if the code is not very well thought of.[/td]
[td]Off[/td]
[/tr]
[tr]
[td]File Uploads[/td]
[td]upload_max_filesize[/td]
[td]Maximum allowed size for uploaded files.[/td]
[td]16M[/td]
[/tr]
[tr]
[td]Resource Limits[/td]
[td]max_execution_time[/td]
[td][/td]
[td]30[/td]
[/tr]
[tr]
[td]Resource Limits[/td]
[td]max_input_time[/td]
[td][/td]
[td]60[/td]
[/tr]
[tr]
[td]Resource Limits[/td]
[td]memory_limit[/td]
[td][/td]
[td]96M[/td]
[/tr]
[/table]

tutto il resto credo sia personalizzabile....ma non so personalizzarlo...qualcuno saprebbe darmi delle indicazioni per attivare le sessioni??
 
Controlla "session.save_path" che definisce la stringa per il salvataggio delle sessioni, quando le sessioni vengono salvate su textfile essa rappresenta il percorso in cui memorizzare i files; il suo valore predefinito è '/temp'.

Poi anche session.auto_start che specifica se le sessioni devono avviarsi automaticamente ad inizio pagina, il valore predefinito è 0 (disabilitata).
 
ciao.
ho provato a seguire le istruzioni offerte dal hosting per configurare php.ini
In pratica ho aggiunto un file php.ini nel mia cartella public_html e dentro ho scritto:
Codice:
session.auto_start = 0
session.bug_compat_42 = 1
session.bug_compat_warn = 1
session.cache_expire = 180
session.cache_limiter = nocache
session.cookie_domain = 
session.cookie_httponly = Off
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_secure = Off
session.entropy_file = 
session.entropy_length = 0
session.gc_divisor = 100
session.gc_maxlifetime = 1440
session.gc_probability = 1
session.hash_bits_per_character = 4
session.hash_function = 0
session.name = PHPSESSID
session.referer_check = 
session.save_handler = files
session.save_path = /tmp
session.serialize_handler = php
session.use_cookies = 1
session.use_only_cookies = Off
session.use_trans_sid = 0

dopo di chè ho aggiunto nel file .htaccess la stringa
Codice:
SetEnv PHPRC /home/miosito/public_html/php.ini
ovviamente sostituendo il miosito con la cartella corretta

Niente non ha funzionato tutto è come prima.

Ho controllato ancora e mi sono accorto che c'era la possibilità di installare da CPanel anche estensioni delle "PHP PEAR" :confused:(cosa sono??? vanno installate??)

Ho notato che c'era la possibilità di installare le seguenti estensioni:

- HTTP_Session (0.5.6 beta)
- HTTP_Session2 (0.7.3 beta)
- HTTP_SessionServer (0.5.0 alpha)

Ho provato ad installare le prime due che mi sembravano quelle che centravano di più :confused:(anche se devo ammettere che non ho idea di cosa stessi facendo). le ho installate prima separatamente, poi entrambe...

Niente non c'è verso che funzionino....
cosa posso guardare ancora o cosa mi suggerite di chiedere all'assistenza dell'hosting?
 
Prova a modificare così la chiamata alla funzione:
PHP:
ob_start();
session_start();
ob_end_clean();
E assicurati che sia all'inizio del file, prima di ogni altra cosa. Poi visualizza il sorgente della pagina: se non c'è nulla prima del doctype vuol dire che la chiamata a session_start() non c'entra.
 
Ciao Alessandro,
ho provato come mi hai suggerito tu.
Ho verificato il sorgente e all'inizio c'è esattamente il codice che mi hai suggerito credo quindi che sia confermato il problema delle sessioni
ora sto provando a risolvere con l'assistenza ... mah ... spero bene...
in ogni caso se avete suggerimenti sono sempre pronto a sperimentare
 
il server a cui mi appoggio offre un servizio di Cloud Hosting - CloudLinux (non so se è questo che intendevi)
...perdona la mia ignoranza ma wamp non è per i server in locale?...
in locale (easyPHP) il sistema funzionava perfettamente e anche in un altro server di hosting gratuito che sto utilizzando.
 
ok risolto con l'assistenza...
in realtà non era il session ma il fatto che non parsava il php come html
nell'htaccess io avevo indicato

AddHandler application/x-httpd-php .htm .html

mentre serviva un 5 in più...:incazz:

AddHandler application/x-httpd-php5 .htm .html

grazie comunque a tutti per l'aiuto
 

Discussioni simili