registrace

Pri vice krokove registraci potrebuju nejak ulozit data ktera uzivatel uz odeslal. Dalam to pomoci cookie ale ne kazdy uzivatel na zeple cookie. Daji se najak podrzet pomoci databazi nebo HTTP protokolu a pak po registraci nejak "vyprazdnit scharku"? Primo jsem zapisoval do tabulky(sql) uzivatelu ale data tam zustanou kdyz uzivatel nahle prestane pri jednom z krouku.
Co to zkusit pomocí sessions?

Pokud to bude při více krokový registraci, tak se ty hodnoty budou stále uchovávat a až bude potřeba, tak je vložíš do DB.
da sa to aj pomoci db, ale tam je pruser v tom ze ak to zrusi uzivatel pred koncom, tak to ma aj tak ulozene, co by mozno nechcel.

Inak pomocou asi to session by bolo najlepsie.
Ale nato aby nepotreboval cookie (lebo nie kazdy uzivatel ma zapnute) musis to presmerovavat aj session_id..
<input type="hidden" value="session_id">

inac na zaciatku webstranky (najlepsie pred tym ako bolo hocico uz na output zaslane..
<?
if(!session_id()){
session_start();
}
da sa to aj pomoci db, ale tam je pruser v tom ze ak to zrusi uzivatel pred koncom, tak to ma aj tak ulozene, co by mozno nechcel.

Inak pomocou asi to session by bolo najlepsie.
Ale nato aby nepotreboval cookie (lebo nie kazdy uzivatel ma zapnute) musis to presmerovavat aj session_id..
<input type="hidden" value="session_id">

inac na zaciatku webstranky (najlepsie pred tym ako bolo hocico uz na output zaslane..)
<?
if(!session_id()){
session_start();
}
Co to session? Jak se to dela. Narazil jsem jeste na jednu vec pri odeslani dat potrebuju overit jestli prezdivka uz nahodou nexistuje. Musím otevri SQL a dad neco takoveho?
seleck * from uzivatel where nick like $nick;
Na začátek každýho skriptu, který souvisejí s touto operací bude:

<? session_start(); ?>

... a pak při každým dalším kroku než se dostaneš k vlastnímu uložení do DB, uložíš do sessions hodnoty z předchozího formuláře:

<?
session_start();

$hodnota1 = $_POST["hodnota1"];
$hodnota2 = $_POST["hodnota2"];

$_SESSION["hodnota1"] = $hodnota1;
$_SESSION["hodnota2"] = $hodnota2;
?>


... při dalším kroku si myslím, že by mělo jít rovněž z druhého formuláře uložit opět hodnoty do sessions.

<?
session_start();

$hodnota3 = $_POST["hodnota3"];
$hodnota4 = $_POST["hodnota4"];

$_SESSION["hodnota3"] = $hodnota3;
$_SESSION["hodnota4"] = $hodnota4;
?>

... no a pak už jen zbývá ty hodnoty uložit do DB a hodnoty sessions zrušit.

<?
session_start();

mysql_query("insert into tabulka values('".$_SESSION["hodnota1"] ."','".$_SESSION["hodnota2"] ."','".$_SESSION["hodnota3"] ."','".$_SESSION["hodnota4"] ."')");

session_destroy();
?>

Je to jen moje teorie, takže nevím, jestli to vůbec bude fachat a za případné chyby se omlouvám.

Petr
K tvé druhé otázce:

Ano, před vložením do DB bych dal:

<?
if(mysql_num_rows(mysql_query("select id from uzivatel where nick like '$nick' ")) > 0):
//ano, přezdívka již v DB existuje a vrátíme uživatele na začátek
else:
//vložíme ho do DB
endif;
?>
session jsem zkousel ale nejak mi nejde, hlasi mi chybu ze nenam nejaky adresar . Pry se to da nejak nastavit pomoci souboru "php.ani" kde je uvedena cesta "session.save_path" jakou tam mam dat hodnotu aby mi to fungovalo?
>> pomoci souboru "php.ani" kde je uvedena cesta "session.save_path" jakou tam mam dat hodnotu aby mi to fungovalo?

php.ini:

session.save_path nastav na lib. adresar s pravem cteni/zapis. Obyvkle /tmp nebo neco jako c:\windows\temp atp.
inac to je php.ini
Kdyz pouzivam cookie kolik jich maximalne muzu poslat?
mne sa zda ze dost pre vsetky normalne pouzitia. Mozno az do zaplnenia hdd.
ludko: resp. vymedzeneho priestoru (temp. int. files)
asi hej
skus input type="hidden"...
priklad:

form_part1.html:

<FORM ACTION="form_part2.php" METHOD="POST">
Hodnota jedna z formularu jedna: <INPUT TYPE="text" NAME="hodn1">
</FORM>

form_part2.php

<FORM ACTION="show_all.php" METHOD="POST">
Hodnota dva z formularu dva: <INPUT TYPE="text" NAME="hodn2">
<?php

if (!$hodn1) {
echo "Treba specifikovat hodnotu jedna! <A HREF=\"javascript: back(-1)\">Spat</A>";
exit;
}
echo "<INPUT TYPE=\"HIDDEN\" VALUE=\"$hodn1\">";

?>
</FORM>

show_all.php:

<?php

if ((!$hodn1) || (!$hodn2))
{
echo "Treba specifikovat VSETKY polia. <A HREF=\"javascript: back(-1)\">Spat</A>";
exit;
}

echo "Tu su vysledky...\n\n";
echo "Hodnota jedna z formularu jedna: $hodn1\n";
echo "Hodnota dva z formularu dva: $hodn2\n";

?>