---
title: "Skillnad på 1 och 1 ???"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/132049-skillnad-på-1-och-1"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "aasah"
published: "2005-07-30T14:17:46.000Z"
updated: "2005-07-30T15:05:19.000Z"
replies: 5
views: 459
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/132049-skillnad-på-1-och-1"
---

# Skillnad på 1 och 1 ???

## #1 — aasah, 2005-07-30T14:17Z

Jag har ett intressant problem. Bakgrunden är att jag vill ha en lägre grad av ip-koll på folk som ansluter via AOL. I det läget vill jag bara jämföra de tre första siffergrupperna, inte alla fyra. Jag skriver ihop ett litet testprogram. **Så länge jag hårdkodar en 1:a för AOL-indikatorn funkar det, men inte när jag hämtar uppgiften ur databasen!!!???** :q

*Min verkliga inloggning kollar fler saker och har inte dessa namn*, det här är bara ett test!

```php
//I filen tst.php fixas "testinloggning"
$db["aol"] = 1; //Hårdkodat värde
if ($db["aol"]) {
   $ip = getenv("REMOTE_ADDR");
   $lastPointPos = strrpos($ip, '.');
   $_SESSION["ipTst"] = substr($ip, 0, $lastPointPos);
}
else $_SESSION["ipTst"] =  getenv("REMOTE_ADDR");
$_SESSION["aol"] = $db["aol"];

echo "<BR><BR>".$_SESSION["aol"].": ".$_SESSION["ipTst"].
"<BR><BR> <a href=\"checkIP.php\">Go to check</a>";

//Kollas i checkIP.php
function inne() {
   if (!isSet($_SESSION["ipTst"])) return FALSE;
   elseif ($_SESSION["aol"] === 1) {
      $ip = getenv("REMOTE_ADDR");
      $lastPointPos = strrpos($ip, '.');
      $comp = substr($ip, 0, $lastPointPos);
      return $comp == $_SESSION["ipTst"];
   }
   else return $_SESSION["ipTst"] == getenv("REMOTE_ADDR");
}

function getOut() {
   unset($_SESSION["ipTst"]);
   unset($_SESSION["aol"]);
}

if (inne()) echo "Funkade för värde ".$_SESSION["aol"]."!<BR><BR>";
else echo "Funkade inte :-( för värde ".$_SESSION["aol"]."!<BR><BR>";
getOut();
if (inne()) echo "Utloggning funkade inte!<BR><BR>";
else echo "Utloggning funkade!<BR><BR>";

//Bara jag kan köra filen - kollar att inte fler sessionsgrejjor rök i getOut()
if (!isAdmin()) echo "Oooops!<BR><BR>"; 
echo "<BR><BR><a href=\"tst.php\">Test</a>";
```

Detta funkar galant! :) Ger följande utskrift:
 

> **I tst**
> 1: xxx.xxx.xxx
> Go to check 
> 
> **I check**
> Funkade för värde 1!
> Utloggning funkade!
> Test

OK, då byter jag ut tilldelningen av 1 i tst.php:

```php
//I filen tst.php fixas "testinloggning" db-variant
//$db["aol"] = 1; Så stod det ovan
$query = "SELECT aol FROM Tabell WHERE User = 'Anna'"; 
$res = mysql_query($query) or die("tst ");
$db = mysql_fetch_array($res);
echo "???:".$db["aol"]."<BR><BR>";
if ($db["aol"]) {
//... se ovan, allt annat lika
```

Ger utskriften:
 

> **I tst**
> ???:1
> 1: xxx.xxx.xxx
> Go to check 
> 
> **I check**
> Funkade inte :-( för värde 1!
> Utloggning funkade!
> Test

???  :q Vad i självaste??? **Vad är det jag inte ser?**

Permalänk: https://www.webforum.nu/p/132049

## #2 — aasah, 2005-07-30T14:32Z

Vänta nu... är det för att en TINYINT i SQL och en helt vanlig 1:a i PHP inte är samma typ? :q

I så fall, vilket är bästa lösningen? Att ändra i databasen till
aol INT 
eller att använda == istället för === i jämförelsen?

Permalänk: https://www.webforum.nu/p/1649597

## #3 — oHLLe, 2005-07-30T14:32Z

Det blir antagligen en sträng med 1 istället för en integer med värde 1. Fast det borde ju funka kan man tycka.

Du kan prova med 

```php
if ($db["aol"])=="1" {
```

Permalänk: https://www.webforum.nu/p/1649598

## #4 — aasah, 2005-07-30T14:36Z

```php
if ($db["aol"] == 1) {
```

Det går. Problemet är skillnaden mellan TINYINT och int. Suck!  :x 

Är det några nackdelar med att bara använda == eller bör jag ändra typ i databasen?

Permalänk: https://www.webforum.nu/p/1649599

## #5 — oHLLe, 2005-07-30T14:46Z

Nej det är inte någon nackdel. Det borde inte vara någon skillnad mellan att skriva så som du hade gjort och så som funkar...

Permalänk: https://www.webforum.nu/p/1649601

## #6 — aasah, 2005-07-30T15:05Z

Skillnaden är att === också kollar att typen stämmer... Jag trodde inte (förut) att den kände av olika typer av intar, men tydligen gör den det.

Tack! :)

Permalänk: https://www.webforum.nu/p/1649603

---

Tråden på webben: https://www.webforum.nu/amne/php/132049-skillnad-på-1-och-1
