Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  5 994
Hei freaks!
Jeg lurer på hvordan jeg kan få til et system der jeg har noen beta keys i mysql (phpmyadmin) databasen slik at folk som kommer nå nettsiden må ha den koden for å komme inn?

jeg har prøvd meg litt frem med å lage det ut av en user login code.. men det går ikke :/ får bare opp en feilmelding:
"Sorry, beta key is not correct or something went wrong. Try again."


her er den koden om det hjelper:

Kode

<?php
	session_start();
	// dBase file
	include "dbConfig.php";

	if ($_GET["op"] == "login")
  {
  if (!$_POST["bkey"])
  	{
  	die("You need to provide a key.");
  	}
  
  // Create query
  $q = "SELECT * FROM `keys` "
  	."WHERE `key`='".$_POST["bkey"]."' "
  	."LIMIT 1";
  // Run query
  $r = mysql_query($q);

  if ( $obj = @mysql_fetch_object($r) )
  	{
  	// Login good, create session variables
  	$_SESSION["valid_key"] = $_POST["bkey"];
  	$_SESSION["valid_time"] = time();

  	// Redirect to member page
  	Header("Location: register.php");
  	}
  else
  	{
  	// Login not successful
  	die("Sorry, beta key is not correct or something went wrong. Try again.");
  	}
  }
	else
  {
//If all went right the Web form appears and users can log in
  echo "<form action=\"?op=login\" method=\"POST\">";
  echo "bkey: <input name=\"bkey\" size=\"15\"><br />";
  echo "<input type=\"submit\" value=\"Login\">";
  echo "</form>";
  }
?>
Kjør debug og se at du faktisk kjører riktig spørring mot databasen.
Eneste som så rart ut sånn raskt for meg var du du satt punktum både før og etter du setter denne variabelen: ".$_POST["bkey"].". Tror at du dermed leter etter noe som ikke finnes i databasen.
Sist endret av Hager; 2. desember 2013 kl. 22:07.
Prøv å skriv ut $q å se hva du egentlig spør databasen om.
mysql_fetch_object
Hvorfor har du '@' forran? Du vil jo gjerne se notice/warn/err meldingene?

Vurder å skift til PDO istedefor MySQL.
Siden er sårbar for SQL-injection.
Hvis du vil fortsatt bruke mysql, kjør denne mysqli_real_escape_string på strengen før du spør databasen. Da slipper du SQL-injection.
Sitat av Hager Vis innlegg
Hvis du vil fortsatt bruke mysql, kjør denne mysqli_real_escape_string på strengen før du spør databasen. Da slipper du SQL-injection.
Vis hele sitatet...
Litt OT, men er det nok med å kun bruke den funksjonen? Mener å ha lest at en også bør ha inputvalidering på begge siter, og eventuelt en white/black-listing av input.

Til TS: Skriv til skjerm hva som faktisk blir kjørt mot DB.
takk for svar!