Archief - PHP: 2 vraagjes (session vraagje / addslashes vraagje)

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Noizz.be

Legacy Member
hey, ik heb 2 vraagjes:

1e vraag:

met onderstaande code wil ik de userID in een var zetten, zodat ik die later kan ophalen voor te gebruiken. Probleem is blijkbaar dat hij dat niet opslaagt.

PHP:
//slashes toevoegen aan vars
$login = addslashes($uname);
$pass = md5(addslashes($upass));

//query uitvoeren
$query = mysql_query("SELECT * FROM tblUsers WHERE username = '$login' AND userpass = '$pass'");

//resulaat van query stockeren
$result = mysql_num_rows($query);

//Als er 1 account gevonden is, dan IF uitvoeren
if($result == '1')
{
	$userid = mysql_query("SELECT userid FROM tblUsers WHERE username = '$login' AND userpass = '$pass'");
	$ingelogd = 1;
	session_register("userid");
	session_register("ingelogd");
					
					
	$showfunctions = 1;
}

een voorbeeld van een pagina waar ik de var wil ophalen is devolgende:

PHP:
if($submit)
{
	//vars inlezen
	$ntitel = $_POST[title];
	$nmessage = $_POST[message];
				
	//controle op de invoer
	if(empty($ntitel) || empty($nmessage))
	{
		$errorempty = 1;
	}
	else
	{
		$ntitel = addslashes($ntitel);
		$nmessage = addslashes($nmessage);
		$ntimestamp = date("Y-m-d H:i:s");
		$nposter = $userid; //userid ophalen uit session
					
		mysql_query("INSERT INTO tblNews (newstitle, newsmessage, newstimestamp, newsposter) VALUES ('$ntitel', '$nmessage', '$ntimestamp', '$nposter')");
					
		$errorempty = 0;
		$sent = 1;
	}
}

Mijn 2e vraagt gaat ook over de bovenstaande code: als ik 1 van de 2 velden leeg laat, wrdt er een error gegeven "fill in all fields", en worden de ingegeven waarden dus terug in de velden gezet. Probleem is nu, dat er een \ voor een ' wordt gezet. Alhoewel ik dat niet heb gezegd, want die "addslashes" staat pas in de "else", dus die addslashes wordt pas uitgevoerd als beide velden ingevuld zijn.

Hopelijk kunnen jullie helpen.
Greetz
Noizz

maT'

Legacy Member
ivm je SQL; ik zou de manual er nog eens bijnemen ;)

1) Je doet 2x dezelfde query
2) mysql_fetch_object() of mysql_fetch_array() gebruiken om je opgevraagde data te kunnen gebruiken.

Om je addslashes ongedaan te maken, kan je gebruik maken van de functie stripslashes(), dewelke overbodige slashes weg haalt. 't Kan nl. zijn dat je host automatisch die slashes toevoegt (php.ini setting)

*edit: session_register() is ondertussen al outdated, gebruik liever de $_SESSION[] superglobals.

Noizz.be

Legacy Member
Bedankt voor de vriendelijke reply :)

alles werkt nu perfect. En ik heb weer wat bijgeleerd met die superglobals.

Noizz

Noizz.be

Legacy Member
Kheb nog een derde vraag

in mijn tabel staat een timestamp field:
newstimestamp, met als formaat: 20050104215827

Graag had ik die in een andere vorm gegoten voor op de site

04 Jan 2005 - 21:58

is daar een functie'ke voor? Of moet ik zal alles zitten substracten?
dus dag substracten, laten zien
maand substracten, omzetten naar maand van 3 letters, laten zien
jaar substracten, ...

Greetz
Noizz

Lashknife

Legacy Member
dat is geen standaard timestamp, maar een zelf gefabriceerde? dan moet je gaan substringen...
http://be2.php.net/substr

$string = "20050104215827";
echo substr($string,0,4); -> jaar

Col.Kurtz

Legacy Member
TIP : Als je user input valideert, trim deze dan ook,
anders kan een gebruiker een spatie ingeven en dan is de input niet empty ;)

$var=trim($_POST['var']);

BertG

Legacy Member
voor die datum kn je via je querry al wat helpen...

SELECT UNIX_TIMESTAMP(date) as unixdate FROM table;

en dan kan je de waarde unixdate gebruiken in de date functies an PHP
vb: date ('d M Y G:H', $qurey['unixdate']);

Col.Kurtz

Legacy Member
BertG zei:
voor die datum kn je via je querry al wat helpen...

SELECT UNIX_TIMESTAMP(date) as unixdate FROM table;

en dan kan je de waarde unixdate gebruiken in de date functies an PHP
vb: date ('d M Y G:H', $qurey['unixdate']);
Kan ook in de query

"select unix_timestamp(date, '%d/%m/%Y') as date"

BertG

Legacy Member
Col.Kurtz zei:
Kan ook in de query

"select unix_timestamp(date, '%d/%m/%Y') as date"

das ook true, mo dan is et wel weer moelijk om andere date functies uit te voere :)

Col.Kurtz

Legacy Member
BertG zei:
das ook true, mo dan is et wel weer moelijk om andere date functies uit te voere :)
Zoals ? :p Ik ben fel voorstander van zoveel mogelijk in de query uit te voeren ;)

BertG

Legacy Member
date_sunrise (wedden da daar geen query voor is :)
en meerdere simpele berekeningen, verschillen enz...
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan