Array $_POST vide

J’ai été confronté au problème suivant deux fois avec un CMS fait maison : poster un formulaire avec la méthode post n’envoyait aucune information à la page définie dans l’attribut action du formulaire. Afficher $_POST :

print_r($_POST);

donnait systématiquement le même résultat :

array();

Mon fichier .htaccess définit Magic_quotes à 0, Register_Globals à 0 et PHP_VER à 5. Puis il contient quelques redirections 301 :

SetEnv MAGIC_QUOTES 0
SetEnv REGISTER_GLOBALS 0
SetEnv PHP_VER 5
Options +FollowSymlinks -MultiViews
RewriteEngine on
rewritecond %{http_host} ^mydomain.be [nc]
rewriterule ^(.*)$ http://www.mydomain.be/$1 [r=301,nc]
Et le problème de $_POST vide vient des redirections 301 redirect. En effet, mon formulaire était posté à http://mydomain.be/index.php à cause d’une balise “base” définie à l’intérieur de la balise “head” de mon document :
<base href=’http://mydomain.be/’ />
et l’attribut action de la balise “form” était le suivant :
<form method=’post’ action=’./index.php’>
A cause des redirections 301 qui font pointer mydomain.be vers www.mydomain.be et le formulaire qui pointe vers mydomain.be/index.php, Apache n’associe pas le tableau $_POST avec www.mydomain.be mais avec le domaine domain.be. D’où le problème de $_POST vide.
J’espère que cet article vous épargnera quelques longues minutes de debugging.

Empty $_POST array issue

I twice had the following issue with my custom CMS : posting a form with post method did not result in sending any data to the form action page. Printing $_POST :

print_r($_POST);

always resulted in displaying the following on my page :

array();

My .htaccess file simply set Magic_quotes to 0, Register_Globals to 0 and PHP_VER to 5. Then I have 301 redirects :

SetEnv MAGIC_QUOTES 0
SetEnv REGISTER_GLOBALS 0
SetEnv PHP_VER 5
Options +FollowSymlinks -MultiViews
RewriteEngine on
rewritecond %{http_host} ^mydomain.be [nc]
rewriterule ^(.*)$ http://www.mydomain.be/$1 [r=301,nc]
And the empty $_POST problem comes from the 301 redirect. Indeed, my form was posted to http://mydomain.be/index.php thanx to a “base” tag set inside the head of my document :
<base href=’http://mydomain.be/’ />
and the form action looks like the following :
<form method=’post’ action=’./index.php’>
With the 301 redirect that has mydomain.be point to www.mydomain.be and the form pointing to mydomain.be/index.php, Apache does not associate $_POST with www.mydomain.be but with domain.be. Hence the empty $_POST issue.
I hope this will spare you some debugging time.
Webliography :

Problèmes de driver (pilote) sous OpenSuse

Problèmes de drivers (pilotes)

N’hésitez pas à lire les articles “Installer Opensuse 11.2″ et “Windows – Linux dual boot : configurer GRUB”.

Les distributions Linux comme OpenSuse sont uniquement livrées avec des logiciels libres et Open Source. En conséquence, vous n’y trouverez pas de drivers propriétaires comme ceux d’Nvidia. Il vous faudra donc les installer manuellement.

Le driver par défaut qui sera donc utilisé pour afficher des informations à l’écran sera un driver de carte graphique GNU/Linux (non-propriétaire), ce qui implique que votre carte graphique affichera des données à l’écran, mais vous n’en tirerez pas le meilleur (effets 3D,…).

Dans mon cas, je voulais utiliser les 2 sorties de ma carte pour utiliser mes 2 écrans en TwinView (avec un bureau étendu sur un vieux CRT 17″ et un 19″ LCD). Pour pouvoir utiliser toutes les ressources de votre carte graphique, vérifiez si la compagnie qui a émis la carte graphique a développé des pilotes pour Linux ou non. C’est le cas des cartes Nvidia. Vous pouvez identifier votre carte Nvidia sur le Wiki d’OpenSuse pour plus d’information : http://fr.opensuse.org/NVIDIA.

Cette page propose un lot de boutons “1-click install” qui déclenchent une installation automatique par YAST (Yet Another Setup Tool, le panneau de configuration de Suse). Veillez à sélectionner le bouton 1-click install qui convient à votre carte graphique (qu’elle soit legacy ou pas,…).

Je préfère installer le pilote manuellement à partir du fichier proposé sur le site Web Nvidia. Ainsi, pour ma GeForce GT220 (hem!), j’ai utilisé le formulaire en ligne d’Nvidia sur http://www.nvidia.com/Download/index.aspx?lang=en-us et ai sélectionné le produit en question et la version Linux 64-bits du driver. J’ai ainsi téléchargé le fichier NVIDIA-Linux-x86_64-190.53-pkg2.run. Ce fichier nécessite l’installation de quelques dépendances. Par YAST, vous devrez installer cmake, gcc, kernel-default, kernel-devel puisque Nvidia a besoin de recompiler le kernel Linux à l’installation du driver.

L’assistant d’installation du driver Nvidia ne fonctionnera pas si le XServer est en fonction. Donc, pour sortir du XServer graphique, faites [CTRL + ALT + BACKSPACE] (la touche Backspace se trouve au-dessus de la touche [ENTER]). Puis identifiez-vous comme utilisateur root. Passez en runlevel 3 en tapant :

init 3

Allez dans le répertoire qui contient le fichier d’installation du driver :

cd /home/olivier (dans mon cas)

et tapez :

sh NVIDIA-Linux-x86_64-190.53-pkg2.run -q

qui lancera l’assistant d’installation du driver Nvidia. Si certaines dépendances sont manquantes, l’assistant vous le dire. Vous devrez alors retourner dans YAST et installer les dépendances manquantes.

S’il n’a pas encore été généré, tapez la commande suivante pour mettre à jour le fichier de configuration X (/etc/X11/xorg.conf):

nvidia-xconfig

Nvidia X Server settingsUne fois installé, le logiciel de configuration Nvidia est accessible par le Menu K (en bas à gauche) sous l’intitulé “Nvidia X server Settings”. Ce logiciel vous aidera à configurer l’affichage TwinView (ou Clone : les 2 écrans affichent alors le même contenu), les résolutions d’écran,… et réécrira le fichier /etc/X11/xorg.conf. Dans certains cas, il pourra s’avérer utile de modifier le fichier xorg.conf manuellement, mais faites toujours une copie de ce fichier avant modification si vous voulez que le serveur graphique X redémarrre correctement ;)

Dans un terminal, la ligne de commande suivante copiera le fichier xorg.conf dans un fichier de sauvegarde xorg.conf.20100111

cp <fichier source> <fichier destination>

cp /etc/X11/xorg.conf /home/olivier/xorg.conf.20100111

Si vous voulez éditer votre fichier your xorg.conf manuellement, tapez

sudo kwrite /etc/X11/xorg.conf

Vous devrez entrer le mot de passe root pour pouvoir charger le fichier xorg.conf dans l’éditeur de texte KWrite.

Webliography :

drivers Nvidia

OpenSuse driver issues

Driver issues

You can read more about “Installing Opensuse 11.2″ and “Windows – Linux dual boot : configuring GRUB”.

Linux distros like OpenSuse are only delivered with free and open source software. As a consequence, you will not find proprietary drivers like Nvidia drivers in the installed OpenSuse. You will have to install them manually.

So, the driver that will be used to display things on your screen will be a GNU/Linux (non-proprietary) graphics card driver, which implies your graphics card will surely be able to send info to screen, but not more.

In my case, I wanted to use both outputs of my card to display TwinView screens (A kind of extended desktop on 2 screens, one old 17″ CRT and one 19″ LCD). In order to be able to fully use the power of your graphics card, you will have to check out whether your graphics card company has developed Linux drivers or not. It is indeed the case with Nvidia cards. Check the Nvidia page on OpenSuse Wiki for more information : http://en.opensuse.org/NVIDIA.

This page provides a set of “1-click install” buttons that will trigger an automatic YAST installation (Yet Another Setup Tool, Suse setup panel). Be careful to select the right 1-click install, depending on your Graphics card (legacy or not,…).

I usually install the driver manually from the file provided on Nvidia website. So, for my GeForce GT220 (hum!), I used Nvidia’s form on http://www.nvidia.com/Download/index.aspx?lang=en-us and chose the right product and Linux 64-bits OS which led me to download file NVIDIA-Linux-x86_64-190.53-pkg2.run. This file requires some dependencies. You’ll have to install cmake, gcc, kernel-default, kernel-devel through YAST first since the Nvidia driver needs to recompile kernel.

The nvidia installer won’t work if XServer is still running. So, in order to kill the Graphic XServer, hit [CTRL + ALT + BACKSPACE] (Backspace key is situated above [ENTER] key). Then login as root. Switch to runlevel 3 and type :

init 3

Go into the directory hosting the driver installer file :

cd /home/olivier (in my case)

and type :

sh NVIDIA-Linux-x86_64-190.53-pkg2.run -q

which launches the install wizard of the Nvidia driver. If some dependencies are missing, the driver will tell you. You’ll have to go back to YAST (type init 5 to go back to desktop) and install the required dependencies.

If it has not been generated, yet, type the following to update your X configuration file (/etc/X11/xorg.conf):

nvidia-xconfig

Nvidia X Server settingsOnce installed, the driver software is accessible from your K Menu (if you’ve chosen KDE) as “Nvidia X server Settings”. This software will help you configure TwinView display (or Clone to display content of screen 1 on screen 2), screen resolutions,… and will re-write /etc/X11/xorg.conf. In some cases, it might be necessary to manually change xorg.conf, but make a copy of it beforehand if you want your Linux GUI to restart correctly ;)

In a terminal, the following command line will copy xorg.conf to a secure xorg.conf.20100111

cp /etc/X11/xorg.conf /home/olivier/xorg.conf.20100111

If you want to edit your xorg.conf file manually, type

sudo kwrite /etc/X11/xorg.conf

You’ll have to enter root password to be able to load the file in KWrite text editor.

Webliography :

Nvidia drivers

Installer OpenSuse 11.2

N’hésitez à lire les articles suivants “Problèmes de drivers (pilotes) sous OpenSuse Linux” ou “Windows – Linux dual boot – configurer GRUB”.

Cet article vise à aider les développeurs PHP-MySql utilisant Windows à changer de système d’exploitation et choisir une distribution Linux comme OpenSuse 11.2. En effet, les développeurs PHP-Mysql utilisant le système d’exploitation Windows utilisent des langages de script et des logiciels Open Source (PHP, Apache et Mysql pour Windows) sur un système d’exploitation propriétaire. Pourquoi ne pas choisir un OS tout aussi Open Source? Cela vous aidera à comprendre un peu mieux comment votre hébergeur (Linux, à coup sûr) fonctionne.

 

Configuration Hardware

MB : Asus P6T SE

CPU : CoreI7

HD0 : OpenSuse 11.2

HD1 : Windows7

GC : GeForce GT220

Télécharger OpenSuse

OpenSuse 11.2 installationVous pouvez télécharger OpenSuse 11.2 (32 ou 64 bits) à partir de http://software.opensuse.org/112/en.

Avant de graver le fichier iso téléchargé, vérifiez la somme md5 de celui-ci. Vous pouvez vérifier la somme md5 d’un fichier sous Windows avec FastSum (téléchargement gratuit). Ce logiciel calculera la somme md5 du fichier iso. Une fois son travail terminé, FastSum affichera la somme md5 qu’il vous suffira de comparer avec la somme md5 fournie par Opensuse.org pour le fichier iso téléchargé. Si les 2 valeurs sont identiques, vous pouvez graver le fichier iso sur un DVD en choisissant l’option “Graver une image iso” de votre logiciel de gravure.

Installer Windows et OpenSuse sur des disques durs différents

Pour éviter tout problème d’installation (mauvaise manipulation, mauvais partitionnement,…) qui pourrait endommager la partition Windows, j’ai choisi d’installer chaque système d’exploitation sur un disque dur séparé.

Install OpenSuse

Pour installer OpenSuse à partir d’un DVD, votre ordinateur doit démarrer (booter) à partir du lecteur DVD plutôt qu’à partir du disque dur. Pour y parvenir, vous allez modifier temporairement la séquence de boot dans le BIOS. Au redémarrage de la machine, appuyez sur la touche qui permet d’entrer dans le BIOS et changez la séquence de boot pour que le lecteur DVD apparaisse en haut de la liste.

Insérez votre DVD dans le lecteur et redémarrez. L’assistant d’installation OpenSuse démarre automatiquement. Votre écran devrait afficher l’assistant d’installation sous forme d’interface graphique. Suivez l’assistant étape par étape. Il vous demandera de :

  • choisir votre environnement (bureau et logiciels associés : GNOME ou KDE,… : j’ai choisi KDE qui intègre des outils comme Quanta Plus (un éditeur de texte). Le choix de l’environnement dépend de l’usage que vous ferez de votre Linux. Comparez les applications que chacun d’entre eux propose et faites votre choix en conséquence. GNOME peut intégrer un éditeur de texte appelé Bluefish.
  • configurer le système d’exploitation (langue du clavier, date et heure,…)
  • partitionner vos disques durs (en prenant garde de ne pas toucher au disque dur Windows, dans le cas d’une installation sur disques séparés)
  • configurer les comptes utilisateurs (et définir le mot de passe root (super-utilisateur)

Une fois installé, OpenSuse est prêt à l’emploi. Au redémarrage, vous aurez le choix de charger les systèmes d’exploitation disponibles : OpenSuse ou Failsafe OpenSuse (sans échec). Ce dernier est un mode de boot qui affiche à l’écran les messages du processus de boot et peut être utile en cas de problème.

Webliography :

Download OpenSuse 11.2 DVD iso

KDE ou GNOME

Applications KDE

Editeur de texte KDE-Quanta Plus

Applications GNOME

Editeur de texte GNOME-Bluefish

Install OpenSuse 11.2

Please also read next article about “OpenSUse Linux driver issues” or “Windows + OpenSuse dual boot configuring GRUB”.

This post is meant to help Windows PHP-MySql developers to switch OS and choose a Linux distro as OpenSuse 11.2. Indeed, PHP-Mysql developers using Windows OS use Open Source scripting languages and softwares (PHP, Apache and Mysql for Windows) on a proprietary Operating System. Why not choose an Open Source OS as well? It helps being a bit more aware of how your web hoster works, anyway.

Hardware configuration

MB : Asus P6T SE

CPU : CoreI7

HD0 : OS : OpenSuse 11.2

HD1 : OS : Windows7

GC : GeForce GT220

Download OpenSuse

OpenSuse 11.2 installationYou can download OpenSuse 11.2 (32 or 64 bits) from http://software.opensuse.org/112/en.

Before burning the downloaded iso, take care to check the md5sum of the file. You can do this under Windows OS with FastSum (free download). This software will calculate the md5sum of the downloaded iso file. Once FastSum has finished its job, simply compare its result with the md5 checksum provided by Opensuse.org. If it has exactly the same value, you can burn the iso file onto a DVD choosing the “Burn an iso image” option in your Burning software.

Install Windows and OpenSuse on separate hard disks

In order to avoid any installation issue (mishandlings, wrong partitioning,…) that could result in an out of order Windows partition, I chose to install each OS on a separate hard disk.

Install OpenSuse

In order to install it, your computer needs to boot from your DVD drive and, to do so, you’ll have to temporarily change the Bios Boot Sequence. At reboot, press key to enter BIOS and change boot sequence (DVD drive needs to appear on top).

Insert your DVD in drive and reboot. OpenSuse Install Wizard will start automatically. Your screen should display the GUI install wizard. Follow the wizard step by step. You’ll be asked :

  • to choose between desktops (GNOME or KDE,…) : I chose KDE (that provides Quanta Plus, a text editor I use to edit PHP files). In order to make the right choice concerning the environment, compare them (GNOME provides Bluefish as text editor)
  • to configure your OS (keyboard language, time settings,…)
  • to partition your hard disk(s) (be sure to choose the right HD for installation)
  • to configure user accounts (and set root password (super-user))

Once OpenSuse is installed, it is ready to use. At boot, you will have the choice to load the available OS : OpenSuse and Failsafe OpenSuse. The latter is a boot mode that displays the boot process messages and can be useful for troubleshooting.

Webliography :

Download OpenSuse 11.2 DVD iso

KDE or GNOME

KDE Applications

KDE-Quanta Plus text editor

GNOME Applications

GNOME-Bluefish text editor

Windows + OpenSuse dual boot configurer GRUB

Vous pouvez aussi lire “Installer Opensuse 11.2″ et “OpenSuse Linux problèmes de drivers”.

GRUB (GRand Unified Bootloader) est un logiciel libre de multiboot qui est chargé au démarrage et affiche les OS disponibles. Sous OpenSuse 11.2, vous trouverez le fichier de configuration GRUB dans /boot/grub/menu.lst. Ouvrez un terminal et tapez :

kdesu kwrite /boot/grub/menu.lst

pour ouvrir et éditer le fichier de configuration GRUB (vous devrez saisir le mot de passe root).

Structure du fichier de configuration GRUB

Le fichier de configuration GRUB a la structure suivante :

  • options : OS par défaut => OS qui sera chargé par défaut au démarrage
  • timeout : temps que l’écran GRUB loader sera affiché avant de démarrer l’OS par défaut ou choisi
  • divers paramètres de configuration associés à chaque OS disponible

Paramétrer l’OS par défaut

Pour choisir l’OS par défaut, changez la ligne

default 0

Ceci chargera le premier OS listé dans le fichier GRUB alors que ‘default 1′ chargera le second OS listé.

Configuration de Boot des OS

Dans ma propre configuration, j’ai 2 disques durs (OpenSuse installé sur le premier et Windows sur le second) :

hd0 contient le système d’exploitation OpenSuse 11.2 et hd2 contient Windows 7. Le fichier de configuration GRUB devrait contenir la structure suivante :

#OpenSuse 11.2
title openSUSE 11.2 – 2.6.31.8-0.1
root (hd0,1)
kernel /boot/vmlinuz-2.6.31.8-0.1-default root=/dev/disk/by-id/ata-WDC_WD3000HLFS-01G6U1_WD-WXE0C7912926-part2 resume=/dev/disk/by-id/ata-WDC_WD3000HLFS-01G6U1_WD-WXE0C7912926-part1 splash=silent quiet showopts vga=0x31a
initrd /boot/initrd-2.6.31.8-0.1-default

#Windows7
title windows7
map (hd0) (hd2)
map (hd2) (hd0)
rootnoverify (hd2,0)
chainloader +1

J’ai seulement ajouté la section “Windows7″ au fichier original. Cette configuration utilise la technique de permutation puisque Windows ne peut pas démarrer s’il n’est pas installé sur le premier disque dur (hd0). Comme je l’ai installé sur le 3è (hd2), GRUB va permuter virtuellement le premier et troisième disque dur par la commande map.

Windows + OpenSuse dual boot configuring GRUB

You can read more about “Installing Opensuse 11.2″ and “OpenSUse Linux driver issues”.

GRUB (GRand Unified Bootloader) is a free multiboot software that is loaded at boot and displays available OS. Under OpenSuse 11.2, you’ll find GRUB configuration file in /boot/grub/menu.lst. Open a terminal and type

kdesu kwrite /boot/grub/menu.lst

to open and edit GRUB configuration file (you’ll be asked root password).

GRUB structure

GRUB configuration file has the following structure :

  • options : Default OS => OS that loads at boot by default
  • timeout : time GRUB loader screen will be displayed before automatically booting
  • several sets of configuration lines associated with each available OS

Setting default boot

In order to set the default OS in GRUB file, simply change the line

default 0

This will load the first OS listed in GRUB file while default 1 will load the second OS listed instead.

OSs boot configuration

In my own configuration, I have 2 hard disks (OpenSuse installed on the first hard disk and Windows7 installed on the second HD) :

hd0 hosts OpenSuse OS and hd1 hosts Windows 7. So GRUB configuration file should take this structure into account :

#OpenSuse 11.2
title openSUSE 11.2 – 2.6.31.8-0.1
root (hd0,1)
kernel /boot/vmlinuz-2.6.31.8-0.1-default root=/dev/disk/by-id/ata-WDC_WD3000HLFS-01G6U1_WD-WXE0C7912926-part2 resume=/dev/disk/by-id/ata-WDC_WD3000HLFS-01G6U1_WD-WXE0C7912926-part1 splash=silent quiet showopts vga=0x31a
initrd /boot/initrd-2.6.31.8-0.1-default

#Windows7
title windows7
map (hd0) (hd2)
map (hd2) (hd0)
rootnoverify (hd2,0)
chainloader +1

I’ve just added the “Windows7″ section to the original file. This configuration uses the swapping technique since Windows can’t boot if it is not installed on the first HD (hd0). As I’ve installed it on hd2 (it may be hd1 on your machine), GRUB will virtually swap the first and second HD throug map command.

EyeOs

Online OSVotre futur ordinateur pourrait bien être un ordinateur en ligne. Votre matériel local sera alors limité à un clavier, un écran et une carte réseau.

Des outils en ligne comme Splashup (éditeur d’image en ligne) offrent des outils surprenants pour retoucher des images en ligne :

Pourquoi ne pas utiliser un OS en ligne, alors?

Ce soir, je me suis penché sur EyeOS. Epoustouflant!

Une fois le téléchargement des 3.18 Mo de eyeOS.zip terminé, je l’ai décompressé et uploadé sur mon serveur Web (un serveur mutualisé). J’ai ouvert mon navigateur Iron Browser et ai lancé http://www.mydomain.be/eyeOS/. L’install d’EyeOS démarre automatiquement. Dans les secondes qui suivent, identifiez-vous avec le mot de passe root et passez à l’action.

EyeOS utilise AJAX et vous est fourni avec des outils de base mais pratiques (calendrier, rss reader, traitement de texte, calculatrice,…). En tant qu’OS, il permet bien sûr de partager les documents, agendas,…

Avec sa structure modulaire et jeune comme il est, ce projet est très prometteur.

Essayez-le… c’est du logiciel libre…

Webliography :

EyeOS

Splashup

EyeOs

Online OSYour future computer may be an online computer. Your local device will be limited to a keyboard, screen and ethernet card.

Online tools like Splashup (online image editing) offer surprising tools for processing images online :

Why not try an online OS, then?

I had an insight into EyeOS this evening. Amazing!

 

Once the 3.18 Mb eyeOS.zip downloaded, I uncompressed it and uploaded it to my web server (shared host). I opened Iron Browser and launched http://www.mydomain.be/eyeOS/. EyeOS installer starts automatically. Just login with your root password and discover it.

EyeOS uses AJAX and provides you very useful online tools (calendar, rss reader, word processor, calculator,…). As an OS, it allows you to share your files, agenda,… with the other users of the system.

Built with modules and young as it is, it’s really promising.

Give it a try. It’s free software…

Webliography :

EyeOS

Splashup